home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-04-16 | 105.0 KB | 1,638 lines |
- <HTML>
- <HEAD>
- </HEAD>
- <BODY>
- <!--$v=0-->Hi, my name is Phil Harris. I work for Cisco
- <!--$v=2885-->Systems in the Consulting Engineering Department. Today I'll be
- <!--$v=5679-->discussing the features and functions and
- <!--$v=8199-->performance of Cisco's range of routing products.
- <!--$v=10901-->This is a long-standing talk at Networkers,
- <!--$v=13970-->and over the years has been developing to contain all the
- <!--$v=16993-->latest information regarding our latest routing products.
- <!--$v=19375-->The agenda for today will be to look at some
- <!--$v=22032-->perception versus reality in terms of the features
- <!--$v=24597-->and concepts we have to think about when looking at performance
- <!--$v=27986-->from an overall network perspective. Performance is measured
- <!--$v=31284-->in raw figures. However, what we'll be looking at
- <!--$v=33712-->is how the network itself impacts performance,
- <!--$v=36735-->and when we need to look at the router's performance compared to the
- <!--$v=39804-->overall network as a system. We'll then look at the various layers of
- <!--$v=43377-->switching we can accomplish through routing
- <!--$v=45804-->and what layers of performance can be affected by this.
- <!--$v=49102-->We'll then look at the actual architecture of the routing platforms,
- <!--$v=52446-->and the various switching powers within these routers
- <!--$v=55378-->that enable us to move packets between interfaces.
- <!--$v=57897-->I'll then spend some time looking at features which affect performance,
- <!--$v=61378-->how we can optimize our network design,
- <!--$v=63760-->and then spend some time looking at troubleshooting,
- <!--$v=66279-->so we can find out why the networks we're using
- <!--$v=68661-->aren't performing as we expect them to.
- <!--$v=71593-->The biggest perception is that the
- <!--$v=73975-->bigger the router, the better, the faster, the more interfaces.
- <!--$v=77547-->Whereas, in fact, what we need to look at is the application of
- <!--$v=80433-->these routers in terms of where they're positioned in the network,
- <!--$v=83456-->and how they actually perform based on the media and the types of
- <!--$v=86846-->data and protocols we're actually transporting across them.
- <!--$v=89823-->Very often it's the media itself,
- <!--$v=92205-->the Ethernet connection or the serial wide area connection,
- <!--$v=95320-->that will be the biggest point of bottleneck in my network.
- <!--$v=98343-->Therefore, understanding where I need features and functionality,
- <!--$v=101595-->as opposed to just raw bandwidth and speed,
- <!--$v=104206-->is often necessary.
- <!--$v=106634-->So let's look at what we need, which
- <!--$v=109519-->platforms and which features will be applied in these parts of the network,
- <!--$v=112405-->and the types of performance we can expect in these areas.
- <!--$v=115978-->This graph shows us
- <!--$v=119047-->the various media characteristics of the type of interfaces
- <!--$v=122070-->commonly found on routers.
- <!--$v=124589-->We look at Ethernet, Fast Ethernet, all the way through to
- <!--$v=127429-->ATM and wide area circuits.
- <!--$v=129902-->It's based on the minimum valid frame size
- <!--$v=133338-->and the bandwidth of this media that we can determine the
- <!--$v=136453-->maximum number of packets per second we can expect
- <!--$v=138880-->to be delivered by a given media.
- <!--$v=141583-->The theoretical value is based on the formula,
- <!--$v=144331-->where if I divide the bandwidth of a media by the packet size
- <!--$v=147766-->I will get the theoretical performance.
- <!--$v=150606-->And the less, or the smaller packets, the less efficient,
- <!--$v=153767-->but more packets per second.
- <!--$v=156240-->In the example of Ethernet,
- <!--$v=158622-->it can be seen with 64-byte packets
- <!--$v=161554-->I should be able to accomplish 14,880
- <!--$v=164302-->packets per second.
- <!--$v=166775-->But as can be seen on this graph, the average size of a packet
- <!--$v=170119-->on a network in an Ethernet example is usually between
- <!--$v=173142-->256 bytes and 1024 bytes,
- <!--$v=176624-->giving me a range of performance anywhere between
- <!--$v=179418-->4.5 down to around 1200 packets
- <!--$v=182578-->per second. Significantly different from the maximum
- <!--$v=185922-->packets per second I may be expecting to achieve
- <!--$v=188945-->with Ethernet. So it's understanding not only what the
- <!--$v=192335-->media characteristics and limitations are,
- <!--$v=195129-->but the size of the packets that the applications I am using
- <!--$v=198106-->are likely to deliver.
- <!--$v=200488-->In the example we have here,
- <!--$v=203328-->I have an analysis of a real network. As can be seen,
- <!--$v=206809-->I've looked at a network from a perspective of two campuses
- <!--$v=209924-->linked by an FDDI ring. As can be seen
- <!--$v=213130-->by looking at the size and the distribution of various-size packets
- <!--$v=216565-->from 64-byte packets, 512-byte packets,
- <!--$v=220047-->and 1280-byte packets, we can see that the
- <!--$v=222795-->entire network will be generating on the left-hand side
- <!--$v=225956-->roughly 2850 packets per second.
- <!--$v=229482-->Now if we apply some rule of distribution of the traffic
- <!--$v=232780-->assuming that 80% of the traffic will
- <!--$v=235300-->stay local to the campus and 20% will need to traverse
- <!--$v=238598-->the FDDI ring, it can be seen
- <!--$v=241025-->that only 570 packets per second is necessary
- <!--$v=244598-->to accommodate all the traffic that needs to
- <!--$v=247163-->be forwarded across these two locations.
- <!--$v=249545-->This is a very simplistic example, but the idea of this is
- <!--$v=252568-->to show that with right net - good network design
- <!--$v=255454-->and good application of routing platforms,
- <!--$v=258340-->we can easily meet the needs and the
- <!--$v=260859-->speed requirements of both the applications and the density of traffic
- <!--$v=264248-->in a given network.
- <!--$v=266814-->So now we understand the perception versus reality in terms of what
- <!--$v=270386-->performance means. Let's look at where performance is
- <!--$v=272997-->affected and how the routers themselves provide
- <!--$v=275791-->their switching capabilities.
- <!--$v=278265-->The definition of a switch is a device
- <!--$v=280921-->that processes and transfers data from one
- <!--$v=283532-->input interface to an output interface
- <!--$v=286235-->based on some rules. Maybe this is,
- <!--$v=289075-->at the lowest level, the addressing
- <!--$v=291594-->of the end-destination network station.
- <!--$v=294251-->As it goes higher into the upper layers,
- <!--$v=296816-->we need more processing and more ability to interrogate the
- <!--$v=300389-->information and therefore make our switching decision.
- <!--$v=302908-->Routing is an overhead -
- <!--$v=306343-->the concept of taking an incoming frame,
- <!--$v=309641-->extracting the packet information or the Layer-3 information,
- <!--$v=313031-->determining from this the destination network address,
- <!--$v=316375-->then looking up some routing table or lookup table
- <!--$v=319673-->which has been maintained by a routing protocol,
- <!--$v=322146-->deciding where the packet has to be forwarded on to,
- <!--$v=325123-->making any MAC header rewrite changes
- <!--$v=328284-->appropriate for the forwarding of the packet,
- <!--$v=330757-->and then processing this out of the output interface
- <!--$v=333597-->is the overhead that routing has to accomplish.
- <!--$v=336162-->This is significantly more than, say, a simple Layer-2
- <!--$v=339185-->bridge or switch has to look at, where they just need to see the
- <!--$v=342667-->MAC-destination address and forward the packet
- <!--$v=345094-->without any manipulation of fields such as the
- <!--$v=348163-->Time To Live or the IP Checksum field in the header.
- <!--$v=351553-->
- <!--$v=353935-->So now we understand what the overhead of routing is.
- <!--$v=356454-->Let's look at the various architectures and the platforms,
- <!--$v=359019-->and see how they accomplish this concept of switching.
- <!--$v=362088-->The biggest dilemma
- <!--$v=364745-->for most Cisco customers is the breadth of range
- <!--$v=367401-->of the numbers of routers in the various families of routers,
- <!--$v=370470-->and the various software options in terms of process switching,
- <!--$v=373860-->optimum switching, NetFlow switching,
- <!--$v=376517-->and where I should apply these and what benefits they give me,
- <!--$v=379219-->and also what potential performance effects they have as well.
- <!--$v=382471-->We'll first look at the Cisco
- <!--$v=385448-->low-end and mid-range architecture
- <!--$v=387922-->routers. In this I'm discussing
- <!--$v=390716-->anything between the 2500 series and the 4700 -
- <!--$v=394289-->so anywhere between the 2500s, the 3600s,
- <!--$v=397724-->and the 4000 series.
- <!--$v=400106-->Each of these class of routers have some basic
- <!--$v=402488-->intrinsic characteristics in terms of the things that make up
- <!--$v=405923-->a router. We have a CPU,
- <!--$v=408626-->which is connected to both memory, for the CPU's use,
- <!--$v=411970-->and also a bus. The bus is a -
- <!--$v=415176-->required to connect the various interface processes
- <!--$v=418657-->and shared memory which is used by both the
- <!--$v=422047-->interface processes and the CPU itself.
- <!--$v=425024-->The shared memory is divided between packet buffers
- <!--$v=428368-->and system buffers, and the CPU memory is divided
- <!--$v=431941-->between routing tables and switching caches.
- <!--$v=434460-->The switching caches is the area of discussion we'll have in most
- <!--$v=437712-->depth to understand the benefit, from a speed
- <!--$v=440185-->perspective, they give us.
- <!--$v=442567-->Looking at the processes for the 2500,
- <!--$v=445728-->we see we have a 20-megahertz 68040
- <!--$v=449117-->processor with a shared RAM up to 2 megabits -
- <!--$v=452553-->2 megabytes for incoming and outgoing packets,
- <!--$v=455118-->and up to 16 megabytes for routing tables,
- <!--$v=458507-->switching caches, configuration information, and so on.
- <!--$v=461989-->It should be noted that with only 16 megabytes of memory,
- <!--$v=465516-->the 2500 router is ideally placed
- <!--$v=468264-->where we have a smaller number of routes in my network.
- <!--$v=471241-->For example, connecting a 2500
- <!--$v=473760-->directly to the Internet may not be appropriate,
- <!--$v=476509-->as the size of the routing tables on the Internet are much larger
- <!--$v=479898-->than can be stored in 16 megabytes of memory alone
- <!--$v=482784-->without the configuration information and other information that needs to be
- <!--$v=485990-->stored here.
- <!--$v=488556-->The 3600 has two flavors, the
- <!--$v=491395-->3620 and the 3640.
- <!--$v=493777-->The 3620 uses the 80-megahertz
- <!--$v=496342-->RISC-IDT 4600.
- <!--$v=499091-->The 3640 utilizes a
- <!--$v=501793-->133-megahertz RISC-IDT 4700.
- <!--$v=504862-->These are much faster processors and the
- <!--$v=507656-->RISC-based architecture of these processors makes
- <!--$v=510130-->the process of looking up information on routing tables,
- <!--$v=512878-->or switching caches, far more optimized and therefore faster.
- <!--$v=516451-->In terms of memory, we have
- <!--$v=518878-->up to 64 megabytes of dynamic RAM
- <!--$v=521581-->on the 3620, and up to 128
- <!--$v=524650-->megabytes of dynamic RAM in the
- <!--$v=527581-->3640. This area of memory is used for both data
- <!--$v=530834-->and packet memory. We have separate areas
- <!--$v=533628-->for configuration information up to 128
- <!--$v=536834-->kilobytes on the 3640.
- <!--$v=539262-->The 4000's
- <!--$v=541873-->family basically is split between the 4000
- <!--$v=544529-->and the 4500 and the 4700.
- <!--$v=547323-->The 4000 was the original platform
- <!--$v=549888-->based on the 40-megahertz Motorola
- <!--$v=552270-->68030 processor. Again,
- <!--$v=554973-->this is not a RISC-based processor and is
- <!--$v=557446-->just the next member up from the 2500
- <!--$v=560561-->processor we saw earlier. This is
- <!--$v=563263-->markedly different from the 4500 and the 4700,
- <!--$v=566699-->which are now based on RISC processors -
- <!--$v=569126-->the 4500 working at 100 megahertz
- <!--$v=571829-->and the 4700 at 133 megahertz.
- <!--$v=575173-->And again the maximum memory we can have
- <!--$v=577829-->in any of the 4000 family is 32 megabytes.
- <!--$v=580761-->Again, probably insufficient for directly
- <!--$v=583418-->connecting to a very large enterprise network or the Internet itself.
- <!--$v=586807-->Now we've looked
- <!--$v=589968-->at the physical components of the low-end and mid-range routers,
- <!--$v=593037-->let's see how packets and frames are processed
- <!--$v=596014-->by these platforms so they can make the switching decision
- <!--$v=598900-->and actually accomplish the task the router's been purchased for.
- <!--$v=602473-->We'll first look at process switching.
- <!--$v=605908-->Process switching is the slowest form of
- <!--$v=608610-->switching available on any router in terms of how it works
- <!--$v=612092-->and when it should be used. Process switching is
- <!--$v=615023-->not the normal default for most Layer-3 protocols,
- <!--$v=617909-->such as IP and IPX, but we'll use this as an
- <!--$v=621482-->example to start off with, so we understand the entire process,
- <!--$v=624367-->so when we look at the protocols that do need to be process
- <!--$v=627161-->switched, we can see how this is accomplished.
- <!--$v=629543-->An incoming frame is delivered
- <!--$v=632292-->by an interface processor across the bus
- <!--$v=635635-->into the packet buffers in the shared memory area.
- <!--$v=638933-->The CPU is now interrupted
- <!--$v=641865-->to acknowledge the fact a packet is now
- <!--$v=644567-->waiting to be processed. The router looks at the
- <!--$v=647865-->destination address in the header of the Layer-3
- <!--$v=651346-->packet information. If it cannot find an
- <!--$v=654324-->entry in one of its switching caches, it now passes
- <!--$v=657530-->that packet processing into scheduled mode. This means the
- <!--$v=661011-->router will continue doing its normal functions of
- <!--$v=663897-->updating routing tables and other functions,
- <!--$v=666325-->and when it is the turn of processing packets
- <!--$v=668981-->on the scheduler, we will now look at processing this packet.
- <!--$v=671592-->Processing the packet means looking in the routing tables
- <!--$v=675028-->to find an entry in the routing tables that matches
- <!--$v=678051-->the destination network in the
- <!--$v=681211-->IP header or IPX header at Layer-3 with a packet that's
- <!--$v=684647-->just been arrived on the interface processor. Once I
- <!--$v=687716-->find this entry, I now should have the destination network
- <!--$v=691151-->with the outgoing interface. I now have to
- <!--$v=693762-->perform some manipulation of this information to create both a new
- <!--$v=697243-->MAC header and also figure out where I need to pass this
- <!--$v=699808-->packet.
- <!--$v=702327-->Once I have this information, I will now initialize
- <!--$v=705213-->my fast cache in the low and mid-range platforms.
- <!--$v=708419-->This is a process of looking at the information I've derived
- <!--$v=711534-->and I've now transposed onto the newly formed packet,
- <!--$v=715015-->and initializing a part of memory in the CPU memory
- <!--$v=718359-->with this information.
- <!--$v=720787-->This is an example of a
- <!--$v=723260-->fast switching cache. This is an AppleTalk example.
- <!--$v=725642-->And we can see that we have the destination network number,
- <!--$v=728528-->the outgoing interface for that network,
- <!--$v=731001-->and the new MAC header which will be prepended
- <!--$v=734162-->to the frame as it leaves the interface on the way out
- <!--$v=737322-->of the router. An important point to notice
- <!--$v=740666-->here is the cache version number, in this case,
- <!--$v=743918-->195. The switch - the cache version number tells me
- <!--$v=747308-->the last time this cache was updated
- <!--$v=749690-->or the values were changed. Now with
- <!--$v=752667-->IOS version 10.3 - or sorry - earlier than 10.3,
- <!--$v=755873-->any single entry change in the cache
- <!--$v=759309-->caused the entire cache to be invalidated.
- <!--$v=761691-->And the entire cache now needs to be built up again
- <!--$v=764302-->through process switching. Process switching as we're
- <!--$v=767141-->discussing is a fairly slow process, and also takes up much
- <!--$v=770302-->CPU time. Therefore, after
- <!--$v=772821-->10.3 and later, only partial-cache
- <!--$v=775341-->invalidation happens. This means if a given
- <!--$v=778593-->interface goes down, or a network-topology change occurs,
- <!--$v=781936-->only those changes will be deleted or invalidated
- <!--$v=785189-->from the cache. Now if there are major numbers
- <!--$v=788761-->of changes, again, the entire cache will be invalidated.
- <!--$v=791647-->The way that the cache itself is
- <!--$v=794441-->aged out is that every minute an aging process
- <!--$v=797510-->looks at 20%, or one-twentieth rather,
- <!--$v=800991-->of the number of entries in the cache and deletes the oldest
- <!--$v=804335-->one-twentieth number of entries in the cache.
- <!--$v=807129-->If for some reason the cache becomes very large,
- <!--$v=809878-->this will be more aggressive, and up to
- <!--$v=812443-->25% of the entries will be deleted every minute.
- <!--$v=815191-->This means that more and more process switching will be accomplished.
- <!--$v=818122-->This means that there could be a performance impact if I have
- <!--$v=821146-->a lot of entries in my cache,
- <!--$v=823711-->or my memory is limited, or if there's lots of invalidation
- <!--$v=826917-->of entries. So the two things to look for is this
- <!--$v=830123-->version number to tell me, "Are there lots of changes happening
- <!--$v=832780-->in my cache?" - and then to decide
- <!--$v=835208-->are they through a routing table change,
- <!--$v=837590-->an interface flap, or just because of the size of entries
- <!--$v=840521-->in my route cache - or my fast cache rather.
- <!--$v=844048-->Now I've initialized the
- <!--$v=847254-->fast cache with the information. If we go back to the example before,
- <!--$v=850369-->I can now pass that information, as I said, onto the newly formed packet.
- <!--$v=853896-->The frame then leaves the outbound interface processor
- <!--$v=857377-->where the source of the MAC address
- <!--$v=860721-->now coming from the interface is now added to the packet
- <!--$v=863744-->and I finally do the CRC check or
- <!--$v=866172-->the sidekick redundancy check. So those things are done on the
- <!--$v=869653-->interface processor because they don't need to be bothered with the CPU.
- <!--$v=872539-->The CPU is required to look at the
- <!--$v=875379-->routing tables and the caches, not just the prepend information,
- <!--$v=878035-->as the outbound interface can do this for us.
- <!--$v=881425-->
- <!--$v=883853-->If we look at fast switching now, after process
- <!--$v=886921-->switching, let's assume this packet has come in. And now there is
- <!--$v=889578-->an entry in the fast cache. Well again, when the packet
- <!--$v=893014-->reaches the packet buffers we'll interrupt the CPU.
- <!--$v=895441-->But because the CPU can find an entry in the fast cache,
- <!--$v=898648-->this packet will be dealt with immediately.
- <!--$v=901442-->So we don't need to go into the scheduling mode we saw before in process
- <!--$v=904831-->switching and wait for the CPU to be available to do switching.
- <!--$v=908038-->This time we immediately will deal with looking in the fast cache,
- <!--$v=911152-->deriving the new MAC header information,
- <!--$v=913580-->prepending this to the packet in the system - in the packet buffers,
- <!--$v=917153-->and we can then pass the newly
- <!--$v=919809-->formed frame and packet out of the outbound
- <!--$v=922191-->interface, again doing the same changes on the way out.
- <!--$v=924985-->And this process has happened much quicker with less CPU
- <!--$v=928421-->steps, and therefore is a much more optimized fashion of switching that we can use.
- <!--$v=931994-->Fast switching is the default for both
- <!--$v=934696-->IP and IPX, and other protocols as well,
- <!--$v=937215-->and therefore is the usual form of operation,
- <!--$v=939826-->unless for some reason we have turned fast switching off.
- <!--$v=943078-->Some of the reasons we may not decide to use fast switching
- <!--$v=946468-->are things like turning DEBUG on. The DEBUG function
- <!--$v=949949-->requires a CPU to look at each packet in turn.
- <!--$v=953293-->This means if I turn DEBUG on, I need to turn
- <!--$v=955904-->process switching on effectively. This is done automatically by the router,
- <!--$v=959156-->but it does mean that if I leave DEBUG turned on,
- <!--$v=961950-->all those packets that are being interrogated by the router
- <!--$v=964561-->will be process switched, giving us a very big performance
- <!--$v=967996-->impact. If we look at the
- <!--$v=970424-->process and fast switching performance figures,
- <!--$v=973722-->we can see the great range in difference of performance.
- <!--$v=976653-->If we look at the 2500 series,
- <!--$v=979035-->process switching is down to about 1800
- <!--$v=981967-->packets per second. Even this is a fairly optimistic number.
- <!--$v=984853-->Whereas fast switching is anything up to about 6000
- <!--$v=987830-->packets per second. Again, looking at the 4700,
- <!--$v=990670-->we have 11,000 packets per second for process switching,
- <!--$v=994197-->50,000 packets per second for fast switching.
- <!--$v=997586-->Now this is another good opportunity to look at where we would use process switching.
- <!--$v=1001113-->Some protocols simply cannot be fast switched
- <!--$v=1003633-->because the information in the header is not constant as it is with maybe
- <!--$v=1007205-->IP or IPX. An example of this would be
- <!--$v=1009862-->X.25 packets. X.25 packets are
- <!--$v=1013114-->always process switched. Therefore, if we
- <!--$v=1016321-->have X.25 requirements in my network, I need to pick a router,
- <!--$v=1019893-->or choose a router, that can meet the performance requirements
- <!--$v=1023054-->of my X.25 network. Therefore, a device that has a
- <!--$v=1026581-->higher processing switching capability would be required,
- <!--$v=1029467-->such as the 4500 or 4700 routers.
- <!--$v=1032536-->Now we've looked at the low to mid-range,
- <!--$v=1036017-->let's look at the Cisco 7000 router family.
- <!--$v=1038628-->This is a different architecture and has a host of different switching
- <!--$v=1041788-->mechanisms available.
- <!--$v=1044307-->First we will look at the 7000 architecture itself.
- <!--$v=1047560-->The 7000 architecture
- <!--$v=1049987-->is based on a bus called the CX bus.
- <!--$v=1053102-->The CX bus works at 533 megabits
- <!--$v=1056171-->per second. And to this I connect interface processors.
- <!--$v=1059560-->I have my Ethernet interface processors,
- <!--$v=1062171-->ATM interface processors, and so on.
- <!--$v=1064920-->The 7000 router can accommodate up to four
- <!--$v=1068492-->interface processors, and has a
- <!--$v=1071149-->switch processing module and a route processing module.
- <!--$v=1073806-->We'll see how these two processing modules operate in a few
- <!--$v=1077287-->moments.
- <!--$v=1079760-->If we look at the physical characteristics of the routers,
- <!--$v=1082600-->the 7000 is based around the 25-megahertz,
- <!--$v=1085578-->68040 processor.
- <!--$v=1088189-->It should be obvious by now that the speed of the processor
- <!--$v=1091349-->and the type of the processor affects how fast
- <!--$v=1094052-->the router can do process switching. Already it should be evident
- <!--$v=1097579-->that the 7000 does not have a process switching-oriented
- <!--$v=1101014-->processor, and we will see why that is in a few moments.
- <!--$v=1103762-->As I said, 533 megabytes
- <!--$v=1106373-->per second is the speed of the bus, and I can have up to five
- <!--$v=1109900-->interface processors on the 7000
- <!--$v=1113061-->and three on the 7010 version of the
- <!--$v=1116221-->7000 router. As far as memory's
- <!--$v=1119794-->concerned, I can have up to 64 megabytes of dynamic RAM
- <!--$v=1123321-->for holding routing tables and caching
- <!--$v=1126482-->tables, and up to 512
- <!--$v=1129505-->kilobytes of memory for my packet buffers.
- <!--$v=1132390-->If I choose to insert the silicon switch engine,
- <!--$v=1135872-->the other variety of the switch processor, I can have
- <!--$v=1138757-->up to 2 megabytes of packet
- <!--$v=1141185-->buffers in the silicon switch engine.
- <!--$v=1144712-->These are the physical characteristics. Now look at how - let's look - now look at
- <!--$v=1147873-->how packets and frames are processed by the 7000.
- <!--$v=1150804-->First, let's look at the switching
- <!--$v=1153598-->paths available. We have a number of switching paths available.
- <!--$v=1156896-->Process switching as we saw before, fast switching which
- <!--$v=1160377-->is the default for all protocols, autonomous switching
- <!--$v=1163813-->which is available on the switch processor card,
- <!--$v=1166882-->silicon switch processing, which is available if I have
- <!--$v=1169859-->the silicon switch processing card option inserted in the router,
- <!--$v=1173432-->RSP-based optimum switching
- <!--$v=1176592-->if I've inserted the RSP 7000
- <!--$v=1179524-->processing card, and RSP 7000
- <!--$v=1182776-->NetFlow, again if I've inserted the RSP
- <!--$v=1185158-->7000 route processing card.
- <!--$v=1187998-->Let's look at process switching.
- <!--$v=1190380-->First we will look at how memory is carved up on these routing
- <!--$v=1193678-->platforms. On the switch processor,
- <!--$v=1196059-->my packet memory is divided between my silicon
- <!--$v=1198670-->cache, my autonomous cache, and my packet buffers.
- <!--$v=1201877-->The route processor has the dynamic
- <!--$v=1204946-->RAM located, which is divided between my
- <!--$v=1208381-->routing tables, my system buffers, and my fast cache.
- <!--$v=1211083-->We'll now look at how a packet coming in or frame coming in from the
- <!--$v=1214473-->interface processor is dealt with in process switching mode.
- <!--$v=1218046-->The incoming packet is placed in the packet
- <!--$v=1221527-->buffers, and again we interrogate the destination network.
- <!--$v=1224779-->This again is done as an interrupted mode on
- <!--$v=1227756-->the CPU. Initially the autonomous -
- <!--$v=1230780-->sorry - the switch processor, or the silicon switch processor, will do
- <!--$v=1234169-->this function, and will first check the silicon switch cache
- <!--$v=1237421-->and the autonomous cache on the switch processor for an entry.
- <!--$v=1240994-->If there is no entry this means this packet has
- <!--$v=1243788-->not been seen before, or this packet cannot be
- <!--$v=1246399-->autonomously switched, or silicon switched.
- <!--$v=1248964-->In this case, the header of the
- <!--$v=1252079-->packet will be passed across the system bus into the system
- <!--$v=1255606-->buffers. Now again, the CPU on the
- <!--$v=1258171-->route processor will be interrupted from whatever function it's
- <!--$v=1260553-->processing at the time, and will interrogate
- <!--$v=1263301-->the information in the destination field,
- <!--$v=1266049-->first looking at the fast cache.
- <!--$v=1268431-->If the entry for this destination
- <!--$v=1271225-->network does not exist in the fast cache, the process will now go into
- <!--$v=1274798-->scheduled mode as before. What will now happen is
- <!--$v=1278325-->we will go to process switching.
- <!--$v=1280707-->The entire contents of the packet now have to be copied
- <!--$v=1283776-->into the system buffers. We will now look at the
- <!--$v=1287074-->routing tables for a corresponding entry for
- <!--$v=1289639-->this destination network, and go through the same process
- <!--$v=1292937-->of initializing the fast cache.
- <!--$v=1295456-->The fast cache now has the information
- <!--$v=1298067-->that can be used to do switching of this packet
- <!--$v=1300861-->in fast switching mode. Once we have this
- <!--$v=1304068-->information, we will also now copy this information to your autonomous cache
- <!--$v=1307320-->and the silicon switch cache,
- <!--$v=1310847-->if these processes have been enabled
- <!--$v=1313412-->for autonomous switching, or silicon switching, because I have a silicon
- <!--$v=1316664-->switch processor. The packet is now
- <!--$v=1320237-->passed back into the packet buffers with the new MAC header information
- <!--$v=1323718-->and passed out of the outbound interface, again
- <!--$v=1326329-->right through the CRC check on the way out. As can be seen,
- <!--$v=1329856-->process switching on the 7000 series is a very
- <!--$v=1333429-->laborious process, takes many, many steps,
- <!--$v=1335810-->and therefore is very slow and cumbersome.
- <!--$v=1338284-->And as the 7000 processor based on the
- <!--$v=1340895-->Motorola chips set at 25 megahertz
- <!--$v=1343322-->using the 68040 processor, we can see will
- <!--$v=1346804-->suffer in process switching-type environments. The
- <!--$v=1349414-->7000 was never designed to accommodate highly
- <!--$v=1352575-->intensive process switching environments such as X.25
- <!--$v=1355232-->or IBM tunnel-entry or exit points.
- <!--$v=1358759-->
- <!--$v=1361186-->If we look at fast switching now, the packet again
- <!--$v=1364668-->is placed in the packet buffers as it comes into the
- <!--$v=1367233-->switch processor, or silicon switch processor card.
- <!--$v=1369981-->Assuming no entry exists in either of these
- <!--$v=1373096-->caches because maybe we have turned off autonomous switching,
- <!--$v=1376348-->or silicon switching, or in a more likely example,
- <!--$v=1379554-->I haven't turned these on. In general, in
- <!--$v=1382440-->the 7000 series, fast switching is the default switching
- <!--$v=1386013-->path. So if I do not enable autonomous
- <!--$v=1388807-->switching, although I normally can, or silicon switching, when I've bought
- <!--$v=1392105-->the silicon switch option, I won't actually get benefit from this
- <!--$v=1395357-->card. So fast switching, again -
- <!--$v=1397785-->The header information is copied across the system bus
- <!--$v=1400853-->into the system buffers, I find the
- <!--$v=1403556-->corresponding entry in the fast cache
- <!--$v=1406258-->in interrupt mode now, so that the CPU on the
- <!--$v=1409602-->route processor stops what it's doing, and then copy the packet header
- <!--$v=1413175-->across the system buff - bus, back into
- <!--$v=1416198-->the packet buffers. And now the packet is now
- <!--$v=1419084-->forwarded out of the outbound interface.
- <!--$v=1421741-->This is a much faster process than
- <!--$v=1424580-->process switching, but as you can see, we've still had to copy the packet
- <!--$v=1427833-->header across the system bus into the route
- <!--$v=1431268-->processor, and then interrupt the route processor to find the entry in the
- <!--$v=1434749-->fast cache. The 7000 was really designed
- <!--$v=1438230-->to take advantage of the switch processor card and the silicon
- <!--$v=1441620-->switch processor card. If we look at the autonomous
- <!--$v=1444735-->switch example now, an incoming packet
- <!--$v=1447208-->is placed in system - in the packet buffers on the switch processor
- <!--$v=1450598-->card. The autonomous
- <!--$v=1452980-->switching process now will look at the destination network
- <!--$v=1456094-->and interrogate the autonomous switching cache.
- <!--$v=1459072-->As we saw in the previous example,
- <!--$v=1461637-->process switching will initialize the autonomous
- <!--$v=1465164-->cache once it's processed its own information.
- <!--$v=1467591-->So now I should be able to glean this information from the autonomous
- <!--$v=1471164-->cache, make my switching decision, create my new
- <!--$v=1474004-->MAC header rewrite information, and process the packet
- <!--$v=1477348-->locally on the switch processor card without interrupting
- <!--$v=1480463-->the route processor. This also
- <!--$v=1482844-->means the packet never leaves the packet buffers on the
- <!--$v=1485684-->switch processor card.
- <!--$v=1488753-->The packet information is now created and the outbound packet interface
- <!--$v=1492234-->is chosen, and we do the CRC check as the frame
- <!--$v=1495395-->leaves the outbound interface.
- <!--$v=1497868-->Silicon switch processing is exactly the same
- <!--$v=1500708-->process. But with the hardware assist of the silicon switch
- <!--$v=1503502-->engine, we can derive much faster performance figures
- <!--$v=1505930-->than we can with simply autonomous switching.
- <!--$v=1508358-->But in general the process is exactly the same. A
- <!--$v=1511152-->packet is passed into packet buffers. The switch processor
- <!--$v=1514725-->card, in this case a silicon switch processor card, interrogates
- <!--$v=1517839-->the packet information, finds the entry in its own
- <!--$v=1521229-->cache, makes the rewrite information available, and processes
- <!--$v=1524252-->the packet out of the outbound interface.
- <!--$v=1527046-->If we look at the performance differences
- <!--$v=1529565-->between process switching and silicon
- <!--$v=1532085-->switching we can see why the 7000 was really
- <!--$v=1534696-->designed for both autonomous and silicon switching modes of operation.
- <!--$v=1537994-->Process switching of 2500
- <!--$v=1541063-->packets per second, again, is fairly optimistic.
- <!--$v=1543811-->In general it would be normal to
- <!--$v=1546239-->see figures of 1000 packets per second or
- <!--$v=1548758-->less in process switching mode. Compared
- <!--$v=1551277-->to 271,000 packets per second
- <!--$v=1554025-->for silicon switch processing, we can see
- <!--$v=1556407-->that the 7000 has really been designed for this type of
- <!--$v=1559201-->protocol application. So if the protocols - that - cannot
- <!--$v=1562591-->be fast switched, we certainly cannot autonomous or silicon-switch
- <!--$v=1566118-->these packets. So for X.25
- <!--$v=1569141-->packets, again as the example, the 7000 would not be a good platform
- <!--$v=1572576-->to end or terminate my X.25
- <!--$v=1576103-->packets or switch my X.25 packets,
- <!--$v=1578668-->unless maybe they were being carried by some other protocol
- <!--$v=1581096-->such as X.25 over TCP/IP,
- <!--$v=1584211-->in which case the IP would be fast switched, or autonomously
- <!--$v=1587646-->switched, or silicon switched, and then I could derive the performance I require.
- <!--$v=1591173-->Okay, we've looked at the 7000 series,
- <!--$v=1594288-->now let's look at the 7200 and 7500 series.
- <!--$v=1597494-->First we're looking at the architecture of these routers.
- <!--$v=1600838-->The 7206 is based on a
- <!--$v=1604411-->network processing engine, and we'll look at the various varieties
- <!--$v=1607480-->available on this. We then have three PCI interfaces,
- <!--$v=1611007-->each working at 200 megabits per second.
- <!--$v=1613709-->The two main PCI
- <!--$v=1616458-->buses can accommodate three interface processors each.
- <!--$v=1619068-->The third PCI bus is reserved
- <!--$v=1622321-->for a 100-megabits-per-second Fast Ethernet
- <!--$v=1625573-->interface on an I/O controller card.
- <!--$v=1628046-->This allows me to have an uplink to a
- <!--$v=1631436-->LAN switch, or some other Fast Ethernet infrastructure,
- <!--$v=1634642-->and have my other port adapters available
- <!--$v=1637207-->for serial lines and other type of port
- <!--$v=1639589-->adapters. The 7200 uses exactly
- <!--$v=1642337-->the same port adapters as the 7500
- <!--$v=1645131-->family we will see in a few moments.
- <!--$v=1648109-->If we look at the processing
- <!--$v=1650491-->engines in the 7200s, we have the
- <!--$v=1653605-->NPE 100, 150, and 200.
- <!--$v=1656491-->The difference between these processors are
- <!--$v=1659239-->the speed and type of the processor. The NPE 100
- <!--$v=1662766-->and 150 is based on the 150-megahertz
- <!--$v=1666019-->Orion R4700 chip set,
- <!--$v=1668904-->whereas the NPE 200 is a 200-megahertz
- <!--$v=1672385-->R5000 RISC-based processor.
- <!--$v=1675225-->In terms of dynamic RAM, I have
- <!--$v=1678019-->up to 128 megabytes of memory,
- <!--$v=1680493-->giving me plenty of memory available for things like large
- <!--$v=1683562-->routing tables and large switching caches.
- <!--$v=1685990-->On the NPE 150 and 200,
- <!--$v=1689058-->I have an added one megabytes of
- <!--$v=1692219-->SRAM or Static RAM. Static RAM is much faster
- <!--$v=1695517-->in terms of accessing the memory and therefore can deliver much
- <!--$v=1698815-->faster interprocessor switching capabilities
- <!--$v=1701472-->if I need these. So if I'm using very fast
- <!--$v=1704861-->interfaces such as Fast Ethernet, or
- <!--$v=1707701-->ATM, or maybe HSSI, I would use the
- <!--$v=1711136-->NPE 150 or 200 so I can make
- <!--$v=1713885-->use of the Static RAM capabilities for fast packet transfer.
- <!--$v=1717091-->The 7500
- <!--$v=1720526-->starts with the 7505 router.
- <!--$v=1723229-->The architecture in this respect is somewhat similar
- <!--$v=1726160-->to the 7000. We have a central
- <!--$v=1728680-->bus, now termed the CY bus. The
- <!--$v=1731978-->CY bus differs from the CX bus in the 7000
- <!--$v=1734680-->inasmuch as it works at twice the speed.
- <!--$v=1737154-->It works at one gigabit per second. The way this is
- <!--$v=1740635-->accomplished is to use the same clocking bus as the
- <!--$v=1744116-->7000, but to transfer twice as many words of data,
- <!--$v=1746864-->two instead of one per CPU cycle,
- <!--$v=1749658-->therefore doubling the amounts of throughput I can achieve
- <!--$v=1753048-->on this bus. I have a route
- <!--$v=1756117-->switch processor as my combined route processor
- <!--$v=1758911-->and switch processor, and up to four
- <!--$v=1762163-->interface processors which can be a traditional 7000
- <!--$v=1765644-->interface processors, or the new generation
- <!--$v=1768209-->of Versatile Interface Processors we will speak about later.
- <!--$v=1771599-->The 7507
- <!--$v=1774393-->is based on two CY buses
- <!--$v=1776775-->and now two route switch processors.
- <!--$v=1779661-->In the 7507, either the RSP2s
- <!--$v=1782684-->or RSP4s can be used. It should be noted that although
- <!--$v=1786165-->there are two RSP cards in the 7507,
- <!--$v=1789555-->only one is ever used at a time,
- <!--$v=1791982-->and the other one is used as a backup in case of failure
- <!--$v=1794868-->on the primary or master RSP.
- <!--$v=1797296-->As can be seen, I have up to five interface
- <!--$v=1800777-->processors that are divided across the two buses.
- <!--$v=1803571-->It should be noted the RSP
- <!--$v=1805999-->touches both buses and therefore is responsible for arbitrating
- <!--$v=1809342-->packets across both buses simultaneously.
- <!--$v=1811953-->Again I can use both the traditional interface processors
- <!--$v=1815251-->and the versatile interface processes.
- <!--$v=1818687-->The 7513 architecture is exactly the same
- <!--$v=1821435-->as the 7507, except I have many more interfaces now.
- <!--$v=1824412-->Up to 11 interface processor cards can be
- <!--$v=1827664-->inserted into the 7513 chassis,
- <!--$v=1830092-->again using either the RSP2 or the
- <!--$v=1832932-->RSP4 route switch processors in master and slave mode.
- <!--$v=1836230-->An additional member
- <!--$v=1839024-->of this family, which I've included in this presentation, is the route switch
- <!--$v=1842597-->module which is incorporated in the Catalyst
- <!--$v=1845116-->5000 and 5500 family of workgroup
- <!--$v=1847864-->switches or multi-layer switches. The RSN
- <!--$v=1851025-->module is an RSP2 class router
- <!--$v=1853865-->blade which can be inserted into the 5000 or 5500,
- <!--$v=1857163-->and give direct routing capabilities
- <!--$v=1859865-->on a per-VLAN basis without the
- <!--$v=1862659-->requirement for external interface processors connecting to a work
- <!--$v=1866232-->group or campus switch. This is a very
- <!--$v=1869072-->optimized solution when I wish to terminate and route between VLANs
- <!--$v=1872370-->in a switched environment.
- <!--$v=1874752-->If we look at the -
- <!--$v=1877271-->how the path of the packets in the route switch module work,
- <!--$v=1880478-->initially packets will come from the standard switch
- <!--$v=1883226-->interface processor cards like the Fast
- <!--$v=1885974-->Ethernet or the 10-megabits-per-second switch interface processors.
- <!--$v=1889547-->It will be flooded across the Catalyst 5000
- <!--$v=1893120-->bus until the supervisor
- <!--$v=1896143-->engine on the Catalyst 5000 or 5500
- <!--$v=1898708-->dictates that the packets should be forwarded only to the RSM.
- <!--$v=1902097-->When the RSM receives these packets, it deals with them
- <!--$v=1905121-->exactly as it would from an outbound
- <!--$v=1907594-->interface, or external interface, in terms of routing these
- <!--$v=1910663-->exactly the same way as a standard router would do.
- <!--$v=1913136-->So an RSM has all these same process switching modes,
- <!--$v=1916389-->fast switching modes as we'll see on the RSP
- <!--$v=1919458-->processors in a few moments.
- <!--$v=1922297-->If we look at the various hardware
- <!--$v=1925046-->components of the 7500 family,
- <!--$v=1927428-->we see that the RSP2
- <!--$v=1929809-->is based on a 100-megahertz R4600 processor.
- <!--$v=1933153-->The RSP4
- <!--$v=1935673-->is based on a 200-megahertz R5000-chip
- <!--$v=1938512-->set, as we saw before with the 7200.
- <!--$v=1941810-->I have up to 11 processors available, sorry,
- <!--$v=1944559-->interface processor cards available on the 7513,
- <!--$v=1947536-->five on the 7507, and four on the
- <!--$v=1950697-->7505. If we look at the
- <!--$v=1954178-->memory architecture, I can have up to 128 megabytes
- <!--$v=1957521-->of DRAM on the RSP1 and 2,
- <!--$v=1960041-->and up to 256 megabytes of DRAM
- <!--$v=1962835-->on my RSP4. This means extremely large
- <!--$v=1966316-->routing tables and caches can be accommodated,
- <!--$v=1968835-->and multiple caches can be accommodated
- <!--$v=1971492-->on the RSP4. It should be noted at this
- <!--$v=1974653-->point that when I talk about the memory use of - for caches,
- <!--$v=1977767-->I have a separate autonomous, sorry, fast cache for IPX,
- <!--$v=1981248-->AppleTalk, IP. And each of these data
- <!--$v=1984409-->structures needs to be stored in dynamic RAM.
- <!--$v=1986791-->So obviously the larger the amount of dynamic RAM available,
- <!--$v=1989768-->the more routing caches, and the larger routing
- <!--$v=1992517-->caches I can store in these memory structures.
- <!--$v=1995585-->I mentioned before the Versatile
- <!--$v=1999158-->Interface Processor card. This is a new generation of
- <!--$v=2002273-->interface processor card that allows me to put
- <!--$v=2004655-->a variable number - type of interface
- <!--$v=2007174-->processor into the same slot on a router.
- <!--$v=2009648-->Traditionally, a router would have an
- <!--$v=2012533-->Ethernet or Token Ring interface on a given slot.
- <!--$v=2015236-->Now I can mix and match the various types of interfaces
- <!--$v=2018763-->on a per-slot basis with up to two port adapters
- <!--$v=2022198-->being accommodated by a single versatile
- <!--$v=2025221-->interface processor. The versatile interface
- <!--$v=2028244-->processor also has a switch processor on
- <!--$v=2031176-->the VIP itself. And we have packet memory here as well.
- <!--$v=2034749-->And the idea here as we'll see in a few
- <!--$v=2037222-->moments is that local switching decisions can be made on the VIP
- <!--$v=2040429-->card without having to cross the bus into the
- <!--$v=2043406-->RSP if this is available to us.
- <!--$v=2046063-->We have a variety of types of VIPs available.
- <!--$v=2049452-->The two VIPs that are most commonly utilized
- <!--$v=2052521-->are the VIP2-40 and the VIP2-50.
- <!--$v=2056094-->The VIP2-40 has up to two megabytes
- <!--$v=2059621-->of SRAM and 32
- <!--$v=2062369-->megabytes of dynamic RAM for packet buffers and also for cache entries,
- <!--$v=2065759-->and the VIP-250 has
- <!--$v=2068324-->a much faster processor and up to 8 megabytes of SRAM.
- <!--$v=2071668-->Other service
- <!--$v=2074049-->adapters can also be inserted into the VIP card such as a compression
- <!--$v=2077393-->agent which allows me to compress my data in hardware
- <!--$v=2080004-->without the route switch processor having to be utilized
- <!--$v=2083302-->to do this very CPU-intensive function.
- <!--$v=2086600-->Let's now look at the RSP-based router switching paths.
- <!--$v=2090173-->We
- <!--$v=2092738-->have on the RSP-based devices - so the 7500s,
- <!--$v=2096082-->the 7200s, and also the route switch module,
- <!--$v=2098509-->process switching, file switching,
- <!--$v=2100937-->optimum switching, NetFlow switching,
- <!--$v=2103777-->distributed switching, and finally Cisco Express Forwarding.
- <!--$v=2106983-->The way the
- <!--$v=2110144-->memory is divided on the RSP is between dynamic
- <!--$v=2112755-->RAM being used for system buffers, my routing tables and my
- <!--$v=2116190-->various caches and forwarding-information tables,
- <!--$v=2118801-->and my packet memory in SRAM being
- <!--$v=2121870-->used for packet buffers.
- <!--$v=2124297-->Let's look at process switching on the 7500 series, first of all.
- <!--$v=2127595-->When the packet comes in from the interface processor, we store
- <!--$v=2131168-->this in the packet memory in the SRAM.
- <!--$v=2133550-->The CPU is interrupted and we look
- <!--$v=2135932-->in the fast cache initially to see if an entry exists
- <!--$v=2138772-->for this destination network. In this case it does not,
- <!--$v=2142253-->so we pass the packet into the DRAM system
- <!--$v=2145734-->buffers on the RSP. The CPU now goes
- <!--$v=2149032-->into scheduled mode and now after completing
- <!--$v=2152376-->all other tasks it was scheduled to perform, we'll look in the routing
- <!--$v=2155811-->table to find the corresponding entry as we saw before on the other platforms.
- <!--$v=2159155-->We will now initialize the fast
- <!--$v=2162407-->cache, or whichever cache is the default for this type of protocol,
- <!--$v=2165888-->make the new right MAC header rewrite information available,
- <!--$v=2169278-->pass this packet into the packet buffers,
- <!--$v=2171889-->and pass it out of the outbound interface.
- <!--$v=2174271-->Now this took less steps than process switching in the
- <!--$v=2177706-->75, 70 - sorry - 7000 series, but as you can
- <!--$v=2180271-->still see, we need to move packet information
- <!--$v=2183157-->from one type of memory to another.
- <!--$v=2185768-->For fast
- <!--$v=2188653-->switching, when the packet comes into the packet buffers, we
- <!--$v=2191493-->will now find an entry in the fast cache
- <!--$v=2193875-->as the previous process-switching example has now initialized
- <!--$v=2196761-->the fast cache. The packet stays in the
- <!--$v=2199509-->packet buffers in SRAM. We find the entry
- <!--$v=2202441-->in the fast cache, make the MAC header rewrite information
- <!--$v=2205785-->available to the packet in packet buffers, and pass the packet
- <!--$v=2209357-->out of the corresponding outbound interface - a much
- <!--$v=2212472-->faster process, and no moving packets from one part of
- <!--$v=2215999-->memory to another part of memory.
- <!--$v=2218427-->Optimum switching as an enhancement has been made in the
- <!--$v=2221633-->IOS code to optimize TCP/IP or IP
- <!--$v=2224839-->switching. The optimum switching
- <!--$v=2227496-->cache used a different lookup mechanism
- <!--$v=2229924-->than the standard fast cache does
- <!--$v=2232351-->to much quicker find the entries in the
- <!--$v=2234917-->cache. So when an entry is being formed in
- <!--$v=2238306-->the optimum cache by the same process switching procedure we
- <!--$v=2241512-->saw before, we can now guarantee to find a
- <!--$v=2244444-->lookup for a given destination network in four
- <!--$v=2247330-->database lookup cycles. It uses an
- <!--$v=2250902-->8-bit lookup cycle, which means with a standard
- <!--$v=2254338-->TCP/IP address of 32-bits, I should be able to find a corresponding
- <!--$v=2257590-->match for this particular destination at work
- <!--$v=2260934-->and as a maximum four lookup cycles.
- <!--$v=2263682-->In general, we do route summarization
- <!--$v=2266247-->and other forms of consolidating of routing information,
- <!--$v=2268629-->so usually I will find an entry quicker than this anyway.
- <!--$v=2271286-->Once I've found
- <!--$v=2274080-->the information in the optimum cache, which has exactly the same
- <!--$v=2277057-->information as a fast cache, I will then make
- <!--$v=2279760-->the same MAC header rewrites available and pass the packet out of the outbound
- <!--$v=2283332-->interface.
- <!--$v=2285852-->The next form of switching we spoke about was NetFlow switching.
- <!--$v=2288463-->This is a new paradigm in terms of switching information between a
- <!--$v=2292035-->router's ports. As you may have noticed by now, routing
- <!--$v=2295608-->before or switching paths before on the other
- <!--$v=2298265-->platforms, has been based on the destination network information alone
- <!--$v=2301746-->as the sole piece of information we correspond
- <!--$v=2304403-->to the information in the routing table.
- <!--$v=2306922-->With NetFlow, we now look at much more information.
- <!--$v=2309991-->We'll see how this works now. Before we do, let's define
- <!--$v=2312968-->what a NetFlow really means. It's a unidirectional sequence of
- <!--$v=2316358-->packets between a given source and destination.
- <!--$v=2318740-->So it's not necessarily a session between two devices,
- <!--$v=2322267-->but the unidirectional flow of packets between
- <!--$v=2325061-->two devices in a given direction.
- <!--$v=2328084-->The things I need to do to characterize NetFlows -
- <!--$v=2331565-->I look at the granularity, how far and how much information do I
- <!--$v=2335092-->use to differentiate different flows.
- <!--$v=2337474-->What starts and stops
- <!--$v=2339856-->a flow, and how quickly will I age out this information in my cache.
- <!--$v=2343429-->To get some information as to why this is important,
- <!--$v=2346177-->a recent study on the Internet backbone showed
- <!--$v=2348925-->that the average flow length is some 21 packets
- <!--$v=2352269-->long and lasts an order of ten or 20 milliseconds.
- <!--$v=2355750-->Therefore, they're very short in length. Things like DNS
- <!--$v=2359323-->lookups can be seen as a flow, or a Web
- <!--$v=2362163-->link to a Web host where I download
- <!--$v=2365461-->just a packet of information or a page of information that moves to another Web
- <!--$v=2368850-->host, again will be deemed as a flow of information.
- <!--$v=2372057-->If we look at the granularity from a
- <!--$v=2375629-->data perspective, if we look all the way up to the application
- <!--$v=2378790-->layer, this is the layer we can look up to, to determine one flow from
- <!--$v=2382225-->a different flow and we'll see how that matters in a few moments.
- <!--$v=2385752-->In the IP header, the information we will use will be the
- <!--$v=2389142-->destination IP address, the source IP address,
- <!--$v=2391799-->and the protocol field. Is it a
- <!--$v=2394455-->TCP, UDP, or IGMP type of packet?
- <!--$v=2397341-->The slide here shows the various
- <!--$v=2400227-->protocol numbers and the corresponding types of IP
- <!--$v=2403616-->protocol that could be being used.
- <!--$v=2406273-->If I'm using UDP as a transport, I will then use a
- <!--$v=2409800-->source UDP port number and a destination
- <!--$v=2412915-->UDP port number. The source number is always a random number
- <!--$v=2416304-->greater than 1024. The destination
- <!--$v=2419602-->UDP port number will be determined by the type of application
- <!--$v=2422625-->or the type of device I'm connecting to.
- <!--$v=2425923-->Common ones would be 53
- <!--$v=2428397-->for domain-name services,
- <!--$v=2431008-->69 for TFTP, or Trivial File Transfer Protocol,
- <!--$v=2434077-->and maybe 161 for
- <!--$v=2436504-->SNMP or the Simple Network Management Protocol.
- <!--$v=2439344-->If my application is using
- <!--$v=2442047-->TCP as a reliable transport mechanism, I will use the
- <!--$v=2445482-->source and destination TCP port numbers.
- <!--$v=2448688-->Again, the source number will be a random number greater than
- <!--$v=2452261-->1024 and the destination number will be a
- <!--$v=2454964-->well-known socket number appropriate with the application.
- <!--$v=2457483-->Some common ones to look out for will be such as number
- <!--$v=2460735-->80, which is World Wide Web traffic, or 23, which is
- <!--$v=2464308-->Telnet, or 21, which is FTP.
- <!--$v=2467148-->Now we've decided what can actually
- <!--$v=2470034-->define a flow from one flow to another on an application
- <!--$v=2473011-->basis, let's look at how the router will now determine
- <!--$v=2475530-->when a flow starts and when a flow
- <!--$v=2477912-->stops. The start of a NetFlow is usually based on the
- <!--$v=2481027-->new entry being formed in the NetFlow cache and we'll see how this
- <!--$v=2484508-->happens in a few moments. Stopping or
- <!--$v=2487165-->aging out or deleting an entry in the NetFlow cache can happen through two
- <!--$v=2490692-->methods, either using the protocol fields,
- <!--$v=2493211-->like in TCP, or the fact that we age out the
- <!--$v=2496234-->cache after a relatively short period of time.
- <!--$v=2499349-->If we look at the initialization
- <!--$v=2501868-->of a TCP/IP flow, this is based when a
- <!--$v=2505441-->packet starts a session and the SYN
- <!--$v=2508326-->flag, or the synchronization flag, is set by a
- <!--$v=2511166-->starting device. In this example we have Bob and Jane.
- <!--$v=2514739-->Bob wishes to connect to Jane's machine.
- <!--$v=2517350-->So we send a packet between Bob's PC and Jane's
- <!--$v=2520923-->PC with the SYN flag sets.
- <!--$v=2523351-->That initial session is enough
- <!--$v=2525870-->to enter an entry in the NetFlow cache.
- <!--$v=2528710-->When Jane responds or Jane's machine responds
- <!--$v=2531779-->with the SYN and the ACK flag set,
- <!--$v=2534435-->again, this is the opposite but corresponding flow for this session.
- <!--$v=2537871-->Now we have all the entry we need to start
- <!--$v=2540573-->this NetFlow.
- <!--$v=2543047-->The other example in UDP,
- <!--$v=2545978-->where I don't have SYN flags, is to look
- <!--$v=2548910-->at the fact that we've now started a NetFlow with a
- <!--$v=2551337-->unique source and destination address going to either the
- <!--$v=2554590-->same or a different destination network.
- <!--$v=2557109-->As long as the application source port socket numbers
- <!--$v=2560590-->are different, and destination socket numbers are
- <!--$v=2563201-->different, we can determine this is a new entry
- <!--$v=2566361-->and start a new entry in the cache. And this is for UDP because UDP
- <!--$v=2569751-->has no concept of a connection-oriented SYN and
- <!--$v=2573324-->acknowledge-type scenario to start the session.
- <!--$v=2575797-->When the
- <!--$v=2578408-->TCP/IP session finishes, we use the FIN flag
- <!--$v=2581569-->in the option field to determine that
- <!--$v=2583996-->we've decided this session needs to end and the
- <!--$v=2586745-->TCP/IP session needs to be broken. Again, with the same example
- <!--$v=2590317-->now, if Bob's PC wishes to terminate the session with Jane's
- <!--$v=2593890-->PC, we can see that we've sent a packet with a FIN flag set.
- <!--$v=2597463-->Jane's PC would then respond
- <!--$v=2600486-->with the FIN and the ACK flag set. Again, this is all the information we
- <!--$v=2604013-->need to empty this entry from the cache because
- <!--$v=2606853-->that initial random source socket number will never
- <!--$v=2610243-->again occur in the near-term
- <!--$v=2613220-->future, and therefore we know that this session has finally finished
- <!--$v=2616701-->and we can delete that entry from the cache.
- <!--$v=2619495-->In again, UDP,
- <!--$v=2622106-->we don't have the luxury of a FIN flag,
- <!--$v=2624625-->so what we decide to do here is to much more aggressively
- <!--$v=2627465-->age out entries in the cache. And typically,
- <!--$v=2630168-->entries in the NetFlow cache are aged out after ten
- <!--$v=2633420-->seconds. Again, if more memory is required by
- <!--$v=2636351-->the NetFlow cache and therefore less is available to the overall
- <!--$v=2639512-->system, we will start aggressively or more aggressively aging out these entries.
- <!--$v=2643039-->And this can be tuned to a very small
- <!--$v=2645787-->granularity of age out time. It should be noted,
- <!--$v=2649039-->however, if we tune the age
- <!--$v=2651696-->characteristics of the cache to too small a value, this means
- <!--$v=2654765-->that as a session may continue
- <!--$v=2657376-->after the entry and the cache has been deleted, we will need to go through
- <!--$v=2660765-->process switching to re-initialize a NetFlow
- <!--$v=2663239-->cache as you will see in a few moments, and therefore take the
- <!--$v=2665987-->performance hit this could involve on the router.
- <!--$v=2668415-->Let's look therefore how
- <!--$v=2671163-->NetFlow switching is accomplished on this 7500
- <!--$v=2674141-->series. An incoming packet is now processed and
- <!--$v=2677713-->passed into the packet buffers in the SRAM
- <!--$v=2680095-->area. As we can see now, we look at many more values
- <!--$v=2683164-->to determine what we should do with this
- <!--$v=2685546-->packet. We'll look at the destination network, the source
- <!--$v=2689119-->network, the source - sorry, the port
- <!--$v=2691913-->type or the protocol type, in this case TCP,
- <!--$v=2694295-->the destination port number, and the source port number.
- <!--$v=2697776-->So in this case the destination port
- <!--$v=2700204-->is WWW or port 80,
- <!--$v=2702906-->and the source is 2112.
- <!--$v=2705380-->If we look at the entry in the NetFlow cache,
- <!--$v=2707945-->on first glance, it may seem we have the appropriate entry in the NetFlow
- <!--$v=2711243-->cache. But as you'll see, if you look carefully at
- <!--$v=2714082-->the source socket number, this is a different number.
- <!--$v=2717014-->Therefore, this station, this same workstation, has
- <!--$v=2720404-->connected to the same destination network but with a
- <!--$v=2723702-->new World Wide Web page or new application
- <!--$v=2727091-->session. So this is characterized as a new flow.
- <!--$v=2730435-->If the entry does not exist
- <!--$v=2733046-->in the NetFlow cache, I now look at my routing table
- <!--$v=2735428-->through standard process switching. I find the
- <!--$v=2738084-->information in my routing table for just the destination network
- <!--$v=2741520-->and a MAC header rewrite portion, and I pass this information
- <!--$v=2744634-->into the NetFlow cache. Before I do this,
- <!--$v=2748024-->however, I will also pass this first packet
- <!--$v=2750543-->against any access control list or
- <!--$v=2753337-->queuing or accounting information I need to interrogate the packet
- <!--$v=2756498-->to, and as long as the packet passes the access control lists,
- <!--$v=2760025-->I will now use that information to
- <!--$v=2762544-->generate a complete NetFlow cache entry. This does
- <!--$v=2765613-->mean if a packet does not pass an access control list
- <!--$v=2768499-->in the process switching
- <!--$v=2771201-->path, I will not form a NetFlow cache.
- <!--$v=2773766-->This is a mechanism that can significantly improve the performance
- <!--$v=2776881-->of access control lists on devices running NetFlow
- <!--$v=2780408-->switching. I will now enter the values
- <!--$v=2783981-->in the NetFlow cache, pass the packet in packet buffers
- <!--$v=2787416-->with the new MAC header rewrite information to the outbound
- <!--$v=2790577-->interface, and perform the CRC check as the packet
- <!--$v=2793325-->leaves the outbound interface.
- <!--$v=2795707-->I now have an entry in the NetFlow
- <!--$v=2798226-->cache, so a subsequent packet from the same flow coming in
- <!--$v=2801433-->will match all five values with the entry in the NetFlow
- <!--$v=2804456-->cache. I can very quickly make my NetFlow
- <!--$v=2806883-->MAC header rewrite information changes
- <!--$v=2809311-->and pass the packet out of the outbound interface.
- <!--$v=2812472-->This is a very detailed slide that looks at
- <!--$v=2815861-->the types of values of information I can derive from the NetFlow
- <!--$v=2819251-->switching path accounting and statistics
- <!--$v=2822320-->application, which is built into NetFlow switching.
- <!--$v=2824885-->A vast array of information is available, such as how many flows
- <!--$v=2828412-->per second, how many given flows with the type of protocol, and between which
- <!--$v=2831618-->source and destination network devices.
- <!--$v=2834183-->This allows me to very clearly characterize the
- <!--$v=2837160-->types of traffic flows I have on a given network running NetFlow
- <!--$v=2840687-->switching. To assimilate -
- <!--$v=2843894-->to take this information and allow it to be assimilated into a network
- <!--$v=2847467-->management package, or billing package, Cisco has defined
- <!--$v=2850490-->a set of NetFlow collectors that allow me
- <!--$v=2853879-->to export the information from a router into these export
- <!--$v=2857406-->devices, such as RMON probes or the Cisco Netsys
- <!--$v=2860887-->products to allow us then to analyze this
- <!--$v=2864231-->information and derive the accounting or statistical information we need
- <!--$v=2867438-->for the traffic in my network. This also means that the memory
- <!--$v=2870965-->of the router does not need to be utilized to store this
- <!--$v=2873804-->information, and this can be a very large amount of information
- <!--$v=2876186-->in a very large enterprise network.
- <!--$v=2878660-->Okay, that was NetFlow
- <!--$v=2881866-->switching. The next type of switching I'd like to discuss is Cisco
- <!--$v=2885439-->Express Forwarding. Cisco Express Forwarding is a very
- <!--$v=2888645-->new type of switching mechanism we have
- <!--$v=2892172-->on the high-end Cisco router platforms.
- <!--$v=2894692-->The drivers behind the creation of
- <!--$v=2897669-->CEF are many. But mainly they're looking at how we
- <!--$v=2901104-->currently do things in the cache-based systems we've seen in the
- <!--$v=2904311-->presentation up to now. Caching as a
- <!--$v=2907059-->mechanism for finding information, and storing
- <!--$v=2909716-->information, is optimized in networks where there are not too many
- <!--$v=2913059-->entries. That can be fairly large but not too many entries, and where the entries
- <!--$v=2916220-->don't have to change very often, or they're not new entries all the time.
- <!--$v=2919793-->Because every time we either change an entry
- <!--$v=2922175-->in the cache mechanism, or there is a new
- <!--$v=2924694-->entry, we have to go through that initial process switching
- <!--$v=2927167-->mode, which can slow down the CPU and become an
- <!--$v=2930053-->overhead in the performance of the router. There's various
- <!--$v=2933397-->other types of information that we may wish to derive
- <!--$v=2936191-->from the packet as well, which is not so easily done in the
- <!--$v=2938802-->cache-based mechanism. And also, the
- <!--$v=2941962-->inability to do various forms of load showing on a per-packet basis
- <!--$v=2945535-->in caching-based mechanisms like fast and optimum
- <!--$v=2948512-->caching, sometimes makes optimization from a network design
- <!--$v=2951856-->perspective hard. So
- <!--$v=2954421-->Cisco Express Forwarding is an attempt to meet the
- <!--$v=2956803-->requirements of all of these limitations we have in cache-based
- <!--$v=2960147-->systems. The basic concepts of
- <!--$v=2963399-->Cisco Express Forwarding is to build adjacencies
- <!--$v=2965918-->with neighbors. These adjacencies
- <!--$v=2968575-->are stored in an adjacency table,
- <!--$v=2971048-->also to create a Forwarding Information
- <!--$v=2973522-->Base. The forwarding information base tells my router
- <!--$v=2976682-->which destination
- <!--$v=2979110-->networks can be found with which adjacencies.
- <!--$v=2981584-->So I have these two data structures. I have the
- <!--$v=2985111-->forwarding information base and the adjacency
- <!--$v=2988271-->table which are the two cornerstones of the
- <!--$v=2991294-->Cisco Express Forwarding mechanism. One thing about
- <!--$v=2994455-->Cisco Express Forwarding, it never requires
- <!--$v=2997157-->the RSP and the 7500 to ever process packets
- <!--$v=2999951-->in switching mode. This is because CEF, or
- <!--$v=3002700-->Cisco Express Forwarding, is topology driven.
- <!--$v=3005494-->We don't have to wait until traffic generates
- <!--$v=3008700-->requirements to do switching before we enter information in
- <!--$v=3011678-->caches. Therefore, the moment we turn the router on
- <!--$v=3014563-->and the routing protocols and the adjacent neighbors
- <!--$v=3016945-->start communicating with my router, I can
- <!--$v=3019510-->build my forwarding information base and my adjacency table
- <!--$v=3022762-->and that stays there until a routing
- <!--$v=3025556-->topology or topology change occurs.
- <!--$v=3028259-->Adjacencies
- <!--$v=3030778-->are nodes if they - that are adjacent to a router in one
- <!--$v=3034259-->Layer-2 hop. That means they're directly connected
- <!--$v=3036916-->to an interface or a media which is one hop away from the given router.
- <!--$v=3040397-->The adjacency table is populated by both routing
- <!--$v=3043924-->table - sorry - routing protocol information, and also the
- <!--$v=3047085-->ARP cache we have, where directly connected devices on broadcast
- <!--$v=3050612-->media, such as Ethernet locally, use the ARP
- <!--$v=3054047-->mechanism to announce their existence. We have
- <!--$v=3057070-->various types of adjacency: normal adjacency for normally connected
- <!--$v=3060643-->devices; null adjacencies, where basically we have
- <!--$v=3063666-->set up adjacent devices within the
- <!--$v=3066873-->router where we used to just throw away packets, like a bit bucket-type
- <!--$v=3070445-->application. We have glean-type adjacencies
- <!--$v=3073194-->where devices are locally
- <!--$v=3076171-->connected to the router. We have punt-type
- <!--$v=3079515-->adjacencies. This is where I've decided that in this
- <!--$v=3081942-->case, this particular type of adjacency or this particular
- <!--$v=3085424-->type of connection requires me to go to
- <!--$v=3088355-->RSP-based switching because of some media-characteristic
- <!--$v=3091378-->change I have to take care of which can't be
- <!--$v=3094172-->accomplished by Cisco Express Forwarding.
- <!--$v=3096554-->We then also have the incomplete type of adjacency
- <!--$v=3099486-->where I don't have enough information necessarily available
- <!--$v=3102005-->to make my MAC header rewrites, and again I will go
- <!--$v=3104936-->back to standard process switching. These last two are the unusual
- <!--$v=3108326-->two in terms of Cisco Express Forwarding, where
- <!--$v=3111441-->punt and incomplete are not normally found on networks
- <!--$v=3114830-->using CEF. Because the whole concept of CEF
- <!--$v=3117533-->is, I decouple the process of doing a switching
- <!--$v=3120373-->path process from the RSP which is doing my routing
- <!--$v=3123625-->protocol applications and functions.
- <!--$v=3126831-->If we look at the adjacency
- <!--$v=3129763-->table, it contains - it's indexed
- <!--$v=3132694-->by Layer-3 addresses and populated
- <!--$v=3135076-->by the ARP table, or as I said earlier, the protocol
- <!--$v=3137962-->running RSPF or EHRP or your other IGP
- <!--$v=3141535-->or BGP routing protocol. I have my new
- <!--$v=3144970-->MAC header rewrite information for that given
- <!--$v=3147627-->adjacent node. I have the connecting
- <!--$v=3150009-->interface, the physical interface on a router that gets me to the adjacent
- <!--$v=3153398-->node, the NTU size of the packets going through
- <!--$v=3156604-->that interface - for example, the maximum size of
- <!--$v=3159582-->an Ethernet or the maximum size on a
- <!--$v=3162009-->serial link - and a number of counters which tell me how many packets have been
- <!--$v=3165582-->processed for that given adjacency.
- <!--$v=3168743-->The Forwarding Information Base is a
- <!--$v=3171766-->table which is based, again, indexed on IP addresses,
- <!--$v=3174606-->and is using the same mtrie lookup mechanism we
- <!--$v=3178179-->saw in optimum switching. Which means, again, I have the
- <!--$v=3180790-->ability to find entries in my forwarding information
- <!--$v=3183996-->base very quickly. The contents of the forwarding information base are
- <!--$v=3187523-->ordered such that we have prefixes
- <!--$v=3190088-->or destination networks pointing to adjacencies
- <!--$v=3193019-->which then match with the entries in my adjacency tables.
- <!--$v=3196592-->If we look at how
- <!--$v=3200073-->Cisco Express Forwarding works, information derived from
- <!--$v=3203005-->RSPF or as I said, any other EGP or IGP,
- <!--$v=3206395-->is utilized to form my forwarding information
- <!--$v=3209601-->base. As long as that information stays
- <!--$v=3211983-->current, the forwarding information base information stays current.
- <!--$v=3215052-->What I have
- <!--$v=3218304-->the ability to do is then pass the forwarding information base
- <!--$v=3221281-->information to all the various line cards if they are using the versatile
- <!--$v=3224854-->interface processes in my 7500.
- <!--$v=3227327-->This means this information can now be
- <!--$v=3230396-->pre-calculated and then distributed throughout the 7500 chassis.
- <!--$v=3233878-->The adjacency table,
- <!--$v=3236763-->again, is formed by either the routing table or a mechanism such as
- <!--$v=3240336-->ARP to derive the local MAC header rewrite and MTU
- <!--$v=3243451-->information and connected interface type.
- <!--$v=3246107-->So Cisco Express Forwarding,
- <!--$v=3248673-->which is released with mainstream 12.0
- <!--$v=3251054-->code and is available in various RSP-based
- <!--$v=3254444-->code sets, is a mechanism that will enhance the
- <!--$v=3257513-->stability of my router because my RSP
- <!--$v=3260078-->is not doing so much traffic demand-based application
- <!--$v=3262643-->work, and also allows me to distribute this information
- <!--$v=3265666-->throughout the VIP cards on my 7500.
- <!--$v=3268048-->However, I can do this distribution function
- <!--$v=3271254-->with both optimum, and fast, and NetFlow switching
- <!--$v=3273728-->as well. With the VIP2-40s and the VIP2-50
- <!--$v=3277209-->cards, and in fact, most of the VIP processor cards that are available
- <!--$v=3280186-->today, I can actually accomplish a very similar
- <!--$v=3282889-->concept. Whereby the fast, or optimum, or NetFlow
- <!--$v=3286370-->cache is pushed into that area of dynamic RAM we
- <!--$v=3289897-->saw before on the VIP card - which means I
- <!--$v=3292600-->copy the same cache information down to the VIP processes.
- <!--$v=3295668-->This means, if a switching
- <!--$v=3298234-->decision has to happen locally on a VIP, whereby the interface -
- <!--$v=3301531-->input interface and output interface are on the same
- <!--$v=3304509-->VIP, I don't need to take my packets up across the various
- <!--$v=3308082-->buses to the RSP to be passed down to the same VIP card
- <!--$v=3311288-->again. This switching mechanism will happen locally.
- <!--$v=3313716-->Also if I'm passing packets between two
- <!--$v=3317151-->VIPs, what I can now do is just use the actual packet memory
- <!--$v=3320724-->on the RSP and not interrupt the CPU of the
- <!--$v=3323518-->RSP to actually forward the packets between VIP cards.
- <!--$v=3326266-->This means I can get significantly faster
- <!--$v=3329839-->processing of packets from a packet-per-second
- <!--$v=3333274-->perspective, because I don't have to interrupt the CPU.
- <!--$v=3335794-->Each VIP card has its own CPU to handle
- <!--$v=3338496-->these packets in the same way as the RSP would've done in the first place.
- <!--$v=3341886-->It means I can get anything up to, with packet
- <!--$v=3345046-->oversight, 120,000 packets per
- <!--$v=3347795-->second per VIP - which means, on an overall
- <!--$v=3351321-->system wide architecture, I can get very, very
- <!--$v=3353703-->high packet-per-second figures in a distributed
- <!--$v=3356085-->fashion using this mechanism. If we actually look
- <!--$v=3359475-->at the various switching paths available to the 7500
- <!--$v=3363048-->family, process switching occurs at about 10,000 packets per
- <!--$v=3366620-->second. Plus we can see, it moves anything up to, theoretically,
- <!--$v=3370193-->a million packets per second with a fully distributed system.
- <!--$v=3373445-->It's highly unlikely you could actually achieve this kind of figure
- <!--$v=3376606-->because the types of traffic flows would almost suddenly preclude you
- <!--$v=3379263-->going from always the same input and output
- <!--$v=3381828-->VIP card. But it is theoretically possible.
- <!--$v=3384439-->More often it's normal that we'll get figures in excess of
- <!--$v=3387874-->300,000, 400,000, 500,000 packets per second with a carefully designed
- <!--$v=3391447-->network and a card - carefully laid-out 7500.
- <!--$v=3394149-->If we compare
- <!--$v=3396577-->CEF to the other optimum and NetFlow
- <!--$v=3399096-->and fast switching, CEF works at
- <!--$v=3402211-->the same speed as optimum switching. So in this
- <!--$v=3404913-->case, on the RSP, I would get 275,000
- <!--$v=3408211-->packets per second and the same figures I would get on the standard
- <!--$v=3411418-->VIP card of around 90,000 packets per
- <!--$v=3413891-->second, for say, packet over SONET on a VIP2-40.
- <!--$v=3417464-->Okay. We've looked at how all the routers
- <!--$v=3420991-->now go through the process of switching packets in the various switching
- <!--$v=3424472-->paths and the various hardware applications. We will now look at the
- <!--$v=3427587-->things that can affect the performance of your network.
- <!--$v=3430243-->The five things I've chosen here are queuing,
- <!--$v=3433725-->compression, filtering, encryption, and accounting.
- <!--$v=3437023-->There are four types
- <!--$v=3439679-->of basic queuing mechanisms available on the router today.
- <!--$v=3442657-->The default is First In, First Out
- <!--$v=3445680-->queuing. We have priority queuing, custom queuing,
- <!--$v=3448611-->and Weighted Fair Queuing. It should be noted
- <!--$v=3451543-->at this point though, queuing is only a mechanism that needs to be
- <!--$v=3454429-->utilized if I have congestion on a
- <!--$v=3456856-->network. If there is no congestion, I don't need to have to worry
- <!--$v=3460108-->about going through the process of queuing. So queuing
- <!--$v=3462857-->is only a mechanism that needs to be adopted if I know I have congestion in my
- <!--$v=3465926-->network. The first type of queuing
- <!--$v=3469086-->I will mention is priority queuing. Priority queuing is a process
- <!--$v=3472292-->of defining different types of traffic into
- <!--$v=3474995-->different priority queues: low, normal, medium, and high-priority
- <!--$v=3478568-->queue. In this case,
- <!--$v=3481591-->any traffic in the high-priority queue will get complete
- <!--$v=3485026-->bandwidth. Whereas anything in the lower-priority
- <!--$v=3487454-->queues will have to wait until the high-priority queue is
- <!--$v=3489836-->empty before they see any available bandwidth.
- <!--$v=3492218-->This is okay in some environments, but is not generally recommended
- <!--$v=3495561-->as priority queuing means that one application can
- <!--$v=3498905-->deprive all other applications of any network bandwidth.
- <!--$v=3502020-->A more fair mechanism is custom
- <!--$v=3505409-->queuing. On a protocol basis I
- <!--$v=3507929-->can assign up to 16 different custom
- <!--$v=3510448-->queues, and configure a percentage of interface
- <!--$v=3513059-->bandwidth per queue to allow
- <!--$v=3515899-->for each different application type or protocol type. So I
- <!--$v=3518647-->can say that SNA may get 20% of my
- <!--$v=3521258-->bandwidth, TCP/IP gets 30%, and all my
- <!--$v=3524373-->remaining protocols get 50%, or some other user-definable
- <!--$v=3527533-->variation and distribution of the bandwidth
- <!--$v=3531014-->available. This means that no one application can ever completely
- <!--$v=3534496-->starve all other applications of bandwidth on the network, and I
- <!--$v=3538068-->know how much bandwidth each application will get.
- <!--$v=3540954-->Weighted Fair Queuing is another
- <!--$v=3544298-->mechanism which by default is turned on for all interfaces
- <!--$v=3547138-->at two megabits per second or slower.
- <!--$v=3550069-->This is another fair queue mechanism which looks at the
- <!--$v=3553551-->relative traffic types going across a given
- <!--$v=3556345-->interface. It will fairly allocate the bandwidth based
- <!--$v=3559093-->on the heavy or light loads that a given session
- <!--$v=3562162-->is exhibiting on the network. In general, what it
- <!--$v=3565643-->means is, heavier sessions get less bandwidth,
- <!--$v=3568666-->allowing smaller sessions, like interactive
- <!--$v=3571094-->sessions, to get more available bandwidth.
- <!--$v=3573613-->In general, an FTP-type
- <!--$v=3576132-->session is more elastic than a Telnet
- <!--$v=3578835-->session or maybe a voice over IP session that
- <!--$v=3582133-->requires very quick and reliable amounts of bandwidth available to
- <!--$v=3585660-->it, and predicts the amounts of bandwidth to it, and cannot afford
- <!--$v=3588775-->to be kept behind a very large FTP transfer, for
- <!--$v=3591981-->example. So Weighted Fair Queuing is a mechanism that is on by
- <!--$v=3595370-->default on IOS code 11.1 and
- <!--$v=3598943-->later, and that allows you to have a very fair mechanism for distributing
- <!--$v=3602241-->traffic across your various interface processes.
- <!--$v=3605356-->Random Early
- <!--$v=3607829-->Detection is not a queue-management mechanism but a congestion-avoidance
- <!--$v=3610944-->mechanism. As I said right in the beginning of this part of the
- <!--$v=3614288-->discussion, queue mechanisms are about dealing with congestion on
- <!--$v=3617723-->my network. Random early detection is
- <!--$v=3620426-->an attempt to preclude or prevent congestion from occurring
- <!--$v=3623815-->in the first place. The way random early detection works
- <!--$v=3627388-->is, is that I have the ability to set
- <!--$v=3630320-->precedence using the type of service field in the IP
- <!--$v=3633526-->header to classify traffic into a certain classification
- <!--$v=3636961-->of traffic. And what I can then do is
- <!--$v=3639664-->say that, if a network interface becomes congested,
- <!--$v=3642275-->I will randomly discard given
- <!--$v=3645160-->frames from a low-priority or low-precedence traffic
- <!--$v=3648596-->stream. TCP/IP, for example,
- <!--$v=3651161-->is an elastic protocol. That means I have a sliding window
- <!--$v=3654138-->mechanism that means I can send more and more packets without having
- <!--$v=3657711-->to wait for an acknowledgment from the destination device.
- <!--$v=3660368-->If I start throwing away packets from
- <!--$v=3663528-->that session, that window size will decrease in size.
- <!--$v=3666185-->And eventually I will get down to the point where
- <!--$v=3669391-->only one packet will be sent until I receive an
- <!--$v=3672231-->acknowledgment. This mechanism alone will slow down the flow
- <!--$v=3675804-->of less-important or low-precedence traffic
- <!--$v=3678323-->streams and allow high-precedence traffic streams
- <!--$v=3681530-->and things like RSVP multimedia for video
- <!--$v=3685057-->conferencing, for example, to get as much bandwidth as they
- <!--$v=3687622-->require, alleviating congestion before
- <!--$v=3690095-->it occurs and therefore not having to worry so much about congestion
- <!--$v=3693531-->management mechanisms in queuing. So random early
- <!--$v=3696874-->discard, or random early detection rather, is a mechanism
- <!--$v=3699760-->that will stop congestion happening and allow me to classify my
- <!--$v=3703287-->traffic.
- <!--$v=3705990-->Compression is another type of
- <!--$v=3708967-->application which can seriously affect the performance of a
- <!--$v=3711486-->router. Compression is a process of taking
- <!--$v=3714280-->packets and looking for repeating sequences in the information
- <!--$v=3717670-->stream and then replacing that with some smaller
- <!--$v=3720830-->value of information that can be then reconstituted at the
- <!--$v=3724174-->remote end back into the original data.
- <!--$v=3727060-->The three types of compression we use are header compression,
- <!--$v=3729946-->per interface line
- <!--$v=3732740-->compression, or per virtual circuit payload
- <!--$v=3735580-->compression - the supported WAN
- <!--$v=3738099-->encapsulations for header compression of frame relay,
- <!--$v=3740985-->PPP, and X.25, for line
- <!--$v=3744512-->or link compression, PPP,
- <!--$v=3747764-->HDLC, or LAPB, and for
- <!--$v=3750146-->payload or per virtual circuit
- <!--$v=3752527-->compression, frame relay, and X.25.
- <!--$v=3755276-->If we look very quickly at the
- <!--$v=3758207-->link type of compression, which is the most common type of compression
- <!--$v=3761139-->used, the two types of compression algorithms we have are the
- <!--$v=3764574-->STAC encryption - compression mechanism, and the
- <!--$v=3767597-->Predictor compression mechanism. STAC is more appropriate
- <!--$v=3771033-->for lower-speed circuits such as ISDN B channels,
- <!--$v=3773506-->but is very, very CPU intensive - but tends to use less
- <!--$v=3776896-->memory. This means if I'm using
- <!--$v=3779278-->STAC as a compression algorithm, I should choose
- <!--$v=3782301-->a platform that has a very fast-working
- <!--$v=3784774-->processor like a 4500 or a 4700
- <!--$v=3787477-->processor. If I'm using Predictor, it uses less
- <!--$v=3791049-->memory - sorry - it uses more memory, I apologize - it uses
- <!--$v=3794622-->more memory but is less CPU intensive. So a smaller
- <!--$v=3798103-->processor will be more applicable if I was using Predictor
- <!--$v=3800806-->as my compression algorithm.
- <!--$v=3804379-->The next thing I look at in terms of things that affect performance
- <!--$v=3807493-->are access control lists. Access control lists are the mechanisms
- <!--$v=3810883-->where I can decide what traffic can flow
- <!--$v=3814181-->between which interfaces and to which destination interfaces.
- <!--$v=3816975-->I can permit and deny traffic coming
- <!--$v=3820044-->into my router and going out of my router. This
- <!--$v=3822838-->means that packets need to be compared to the entries in the access
- <!--$v=3826411-->control lists to make sure that if a packet is not
- <!--$v=3829297-->allowed to pass through that interface, it can be
- <!--$v=3831862-->discarded. Depending on how big my access control lists
- <!--$v=3835434-->are, configured on the IOS, the command
- <!--$v=3837954-->line interface, this can seriously affect the performance
- <!--$v=3840565-->in my router, because every packet on a given
- <!--$v=3842992-->interface which is pointing towards an access control list, needs to be
- <!--$v=3846336-->compared against an access control list.
- <!--$v=3848947-->And the more extensive I make that access control
- <!--$v=3851329-->list, the more information needs to be checked against a given
- <!--$v=3854306-->packet. So one of the rules of
- <!--$v=3856688-->thumb to give us good performance for the access control lists is to
- <!--$v=3859986-->order my access control lists so the most regularly found packets
- <!--$v=3863330-->in my network are found very quickly in terms of the access
- <!--$v=3866353-->control lists. And that means these entries will be right
- <!--$v=3868918-->at the top of my list of access controls.
- <!--$v=3871483-->If I can't get away with this and I have to have very
- <!--$v=3874643-->complex, long access control lists,
- <!--$v=3877209-->NetFlow switching is a very good mechanism
- <!--$v=3879636-->to somewhat - allow
- <!--$v=3882934-->me to use complex access control lists and
- <!--$v=3885316-->not solve them, but not have too much of a performance hit, because
- <!--$v=3888889-->only the very first packet in NetFlow is passed
- <!--$v=3891546-->against the access control lists. Or subsequent
- <!--$v=3894248-->packets are then forwarded normally because the first packet
- <!--$v=3897088-->made it through the access control lists.
- <!--$v=3899561-->So use access control lists. They're very useful but make
- <!--$v=3901989-->sure they don't become an overbearing performance impact on your
- <!--$v=3905287-->router, because a CPU has to do all this comparing and then just
- <!--$v=3908814-->throw away packets it finally founds - finally finds cannot
- <!--$v=3911975-->be forwarded to one of its outbound interfaces.
- <!--$v=3915089-->Some enhancements to access control
- <!--$v=3917563-->lists are really about when we can do fast or optimum switching
- <!--$v=3920952-->depending on where the access control lists are pointing at and how
- <!--$v=3924479-->extensive these access control lists are.
- <!--$v=3926999-->It's pretty much fair to say that all access control lists, both
- <!--$v=3930251-->simple and extended, can now be fast or
- <!--$v=3932770-->optimum switched, rather than process switched as they were
- <!--$v=3935289-->before. So in most cases,
- <!--$v=3938083-->we don't have the switching impact, we do have the
- <!--$v=3940603-->CPU overhead of comparing these packets to the access control lists.
- <!--$v=3944038-->Encryption is another very CPU-intensive
- <!--$v=3947382-->application. Encryption is a process of taking
- <!--$v=3950955-->packets and randomizing sequence
- <!--$v=3953428-->of regularly occurring
- <!--$v=3955902-->packets or - sorry - information in the packet stream,
- <!--$v=3958604-->so that a eavesdropper or
- <!--$v=3961307-->some untrusted part of the network would never be able to extract the actual
- <!--$v=3964834-->data from the data stream. This again
- <!--$v=3967490-->requires various algorithms to be utilized to encrypt my traffic
- <!--$v=3971063-->flow. In this case, what we need to look at is
- <!--$v=3974224-->making sure that only the given destinations or
- <!--$v=3976789-->the given interfaces where I need encryption, actually have encryption
- <!--$v=3980270-->turned on, because this will reduce the impact from the CPU
- <!--$v=3983568-->having to encrypt all packets on a given router.
- <!--$v=3986316-->And we use the crypto-map function to allow us to
- <!--$v=3989522-->assign given interfaces to a given encryption mechanism.
- <!--$v=3992729-->One
- <!--$v=3995798-->word on encryption before I go on to accounting,
- <!--$v=3998180-->is we should be careful also when I
- <!--$v=4000653-->combine compression and encryption. If we think
- <!--$v=4004134-->about it, compression is the concept of taking random
- <!--$v=4007707-->packets and making - sorry - encryption is
- <!--$v=4010959-->the concept of taking, repeating packets and randomizing
- <!--$v=4013936-->them. Compression is a concept of looking for repeating
- <!--$v=4017463-->packets of information and then compressing
- <!--$v=4020349-->them. Or the way the IOS works is to
- <!--$v=4023052-->encrypt before I compress so all data
- <!--$v=4026166-->that would hit the compression agent would be randomized.
- <!--$v=4028960-->I would find no correspondingly repeating patterns,
- <!--$v=4031480-->and therefore my compression ratio will be very
- <!--$v=4033999-->low. Let's look at accounting
- <!--$v=4037297-->for IP and IPX. Accounting is a
- <!--$v=4040320-->very simple process of looking at a given interface and counting how
- <!--$v=4043572-->many packets and how many bytes flow through an
- <!--$v=4046092-->interface. But this process can take anything up to
- <!--$v=4049344-->30% performance away from fast and optimum
- <!--$v=4052046-->switching. So if you have the requirements to do
- <!--$v=4054840-->accounting, NetFlow switching for IP certainly is
- <!--$v=4058092-->an alternative but doesn't have the performance overhead of standard IOS
- <!--$v=4061528-->accounting. Okay, let's look at
- <!--$v=4064688-->some optimized network design ideas that can help us with some
- <!--$v=4067803-->performance issues. In this
- <!--$v=4070689-->example with the distributed versus centralized server form, we
- <!--$v=4073804-->can see that all of these central servers are located in the
- <!--$v=4077102-->FDDI ring, which is connected to the rest of the devices,
- <!--$v=4079850-->the hosts connecting to those servers by a very small
- <!--$v=4082644-->56-kilobit-per-second circuit. Now in some
- <!--$v=4085988-->examples, this may be the only type of circuit which is
- <!--$v=4088553-->available. Or in a banking or retail
- <!--$v=4090935-->application, this may be the most cost-effective way of getting my
- <!--$v=4094278-->devices to my servers. If this is a
- <!--$v=4097714-->limitation, there's various things that can be achieved in load balancing that can actually allow
- <!--$v=4101287-->me to make better use of the available circuits.
- <!--$v=4103897-->Serial-line load balancing can be achieved in
- <!--$v=4107424-->various way. Process switching allows me to do
- <!--$v=4110264-->packet-by-packet load sharing so that from a given source and
- <!--$v=4113562-->destination, each alternate packet will be load shared across a
- <!--$v=4117135-->different circuit, if the cost of the circuit
- <!--$v=4119792-->between the two source and destination routers is the
- <!--$v=4122265-->same, and there are no external hops on one or the other of
- <!--$v=4125746-->the load-balancing serial
- <!--$v=4128770-->links. So as long as I have an equal cost path in two
- <!--$v=4132297-->directions between a source and destination router, I can
- <!--$v=4135365-->load balance across these and with process switching, this would be
- <!--$v=4138572-->done on a per-packet basis. This is a very fair method and a very
- <!--$v=4141778-->even method of distributing traffic, but I'm having to use process switching
- <!--$v=4145351-->to accommodate this. Fast and
- <!--$v=4147916-->optimum switching will do this on a per-destination
- <!--$v=4150435-->basis. In this case, a source
- <!--$v=4153229-->destination network connection will be load shared on
- <!--$v=4156390-->each new or alternate destination network
- <!--$v=4159734-->device. If this is the case, what will happen is,
- <!--$v=4163307-->depending on the distribution of size of sessions, I may
- <!--$v=4166467-->or may not get a fair and equal
- <!--$v=4169490-->distribution of traffic across the serial links.
- <!--$v=4171918-->For example, if one of these sessions is a Telnet
- <!--$v=4174712-->session, and one of these sessions is an FTP session,
- <!--$v=4177277-->the Telnet session will go down one link, and the
- <!--$v=4180025-->FTP session will go down the other. It may be more appropriate
- <!--$v=4183598-->to have both the Telnet and the FTP and
- <!--$v=4186667-->all other Telnet and FTP, vying for the same
- <!--$v=4189186-->bandwidth and allowing the statistical nature of the traffic
- <!--$v=4192164-->to even-out the traffic forwarding.
- <!--$v=4194637-->NetFlow switching allows me, still on a per-flow
- <!--$v=4198027-->basis, load balancing. This is more fair
- <!--$v=4200409-->than standard fast or optimum switching because each flow is roughly the
- <!--$v=4203981-->same size or statistically the same size, so much
- <!--$v=4206959-->like packet-base load sharing, I can get a better
- <!--$v=4209478-->distribution of traffic across two
- <!--$v=4212180-->load-balancing equal-cost paths between routers.
- <!--$v=4214700-->If I'm using
- <!--$v=4217402-->ISDN, there's two mechanisms I can use to aggregate my
- <!--$v=4220838-->B channels. Cisco's own Dialer Load Threshold
- <!--$v=4223998-->mechanism, which allows me to bundle together
- <!--$v=4227067-->BRI channels into looking like one 128-kilobit-per-second
- <!--$v=4230457-->pipe, and that's fast switched, or using PPP
- <!--$v=4233984-->multi-link RFC 1990, which again,
- <!--$v=4236869-->can now be fast switched to allow me to fast switch
- <!--$v=4239618-->these packets across a 128-kilobit-per-second or
- <!--$v=4243099-->greater bundle of ISDN, BRI, or PRI
- <!--$v=4246168-->channels.
- <!--$v=4249191-->So these are some of the things where I have intrinsic
- <!--$v=4251573-->media restrictions that can allow me to use the IOS
- <!--$v=4254000-->features to better optimize my network design and traffic
- <!--$v=4257207-->forwarding. Let's look at a few troubleshooting things now that can help us
- <!--$v=4260596-->define when I think my network should be performing okay,
- <!--$v=4263528-->but I seem to have performance issues.
- <!--$v=4266597-->There are various statistics that can be gathered from the interface
- <!--$v=4269116-->processor cards as to how the network is performing or
- <!--$v=4272414-->how the devices connected to the routers are
- <!--$v=4274842-->performing. First of all we'll look at the buffers
- <!--$v=4277407-->and queues. The first thing we will look at is the ignore
- <!--$v=4280934-->counter. The ignore counter is simply when a packet
- <!--$v=4284048-->has been sent to the router for some reason to be
- <!--$v=4286843-->processed, and I have no method of placing this in an
- <!--$v=4289912-->initial packet buffer. If we remember
- <!--$v=4292660-->from the discussion of process and fast switching, the first thing we do is to
- <!--$v=4296141-->pass the packet into the packet buffers in the shared memory
- <!--$v=4299302-->area. If there's no packet
- <!--$v=4301729-->buffers available in the shared memory area, then I cannot
- <!--$v=4304523-->process this packet and I'll have to ignore the packet.
- <!--$v=4307043-->So this means that if for some reason there are no longer
- <!--$v=4310203-->enough interface processes available in my
- <!--$v=4312814-->packet buffers. This is the reason I have ignores. This usually
- <!--$v=4316204-->means that for some reason, I either have
- <!--$v=4319043-->no way of emptying out those packet buffers
- <!--$v=4321425-->quick enough because my processor can't deal with these quick enough or some
- <!--$v=4324815-->other memory limitation is occurring. If this is
- <!--$v=4327701-->the case, we need to look at whether we are having too slow a processor
- <!--$v=4331273-->in this router and maybe we need to upgrade the processor in the
- <!--$v=4333701-->router, or maybe something else is utilizing
- <!--$v=4336541-->this memory that we're not aware of.
- <!--$v=4338969-->Input drops are the next thing
- <!--$v=4342175-->we'll look at. This is where a packet has successfully made it into the
- <!--$v=4345427-->packet buffers, but now for some reason, I can't
- <!--$v=4348175-->transfer this packet into system buffers. Now this could be quite an
- <!--$v=4351702-->important problem. System buffers, as we
- <!--$v=4354176-->may remember, is what I use to deal with packets that can be process
- <!--$v=4357428-->switched. Now these could be normal data packets, like
- <!--$v=4360589-->X.25 packets, or if I'm running DEBUG, IP
- <!--$v=4363108-->packets. But moreover, they will be routing protocol packets
- <!--$v=4366406-->like RIP and SAP for
- <!--$v=4368879-->IPX and EIGRP or OSPF
- <!--$v=4372040-->in IP networks. If I
- <!--$v=4374513-->can't have a - I can't find a system buffer to
- <!--$v=4376941-->place my incoming routing protocol packets, I
- <!--$v=4380331-->could, theoretically, start causing network
- <!--$v=4382712-->instability because I would not be receiving hellos
- <!--$v=4385552-->and acknowledgments in my routing protocol, and I could deem that my topology
- <!--$v=4388850-->of my network has changed if I do not receive enough updates
- <!--$v=4392148-->or acknowledgments in a given period of time.
- <!--$v=4394759-->So this is quite an important issue to deal with immediately, you
- <!--$v=4397141-->see this. System buffers, as I said, are used for
- <!--$v=4400347-->process switched packets and they can be tuned by
- <!--$v=4403416-->network operators. Whereas packet buffers are not tunable
- <!--$v=4406073-->by a command-line interface. We do not normally
- <!--$v=4409508-->recommend that people tune the system buffers unless they're
- <!--$v=4412486-->guided by the Technical Assistance Center or
- <!--$v=4415188-->some other body that can look at why they're having
- <!--$v=4417982-->these issues and make the appropriate changes. Normally, if this has
- <!--$v=4421509-->happened, a subsequent release of the IOS may have
- <!--$v=4424258-->fixed the bug or issue that causes this buffer
- <!--$v=4426960-->starvation. And if you've left your buffer tuning as it
- <!--$v=4429525-->was before, you will no longer be able to take the benefit
- <!--$v=4432090-->of the new IOS changes and also the maximum buffer
- <!--$v=4435297-->performance. The IOS has been designed to
- <!--$v=4438411-->automatically adjust the size of these buffers in case one buffer
- <!--$v=4441984-->may be starved by another to make sure there's an equal, fair
- <!--$v=4445465-->allotment of buffers in the system buffer area.
- <!--$v=4448168-->Output drops are
- <!--$v=4451603-->the opposite to input drops. A packet
- <!--$v=4454351-->in system buffers has no way of being placed into the packet buffers
- <!--$v=4457878-->to be placed into an outbound interface
- <!--$v=4460902-->queue. This means that this packet will now have
- <!--$v=4463512-->to be dropped because I have no means of
- <!--$v=4466032-->passing it out of the system buffers and I don't want to use up system buffer
- <!--$v=4468963-->area memory, if I can help it.
- <!--$v=4471391-->Again, this is probably caused by the same problem
- <!--$v=4474002-->we had in the initial discussion about ignores.
- <!--$v=4476750-->
- <!--$v=4479361-->Output drops. This is now where I have the packet successfully in my
- <!--$v=4482796-->packet buffers, but for some reason I have no method
- <!--$v=4485819-->of getting it out to my outbound interface. This is because either
- <!--$v=4489117-->the input - sorry - the output queue
- <!--$v=4491499-->on the interface is full or the
- <!--$v=4494293-->media connected to the full is so busy I simply cannot pass the
- <!--$v=4497820-->packet out. This can be done for various reasons.
- <!--$v=4500340-->Normally, it will be looked at - this could be down to the fact
- <!--$v=4502767-->the outbound interface media is
- <!--$v=4505195-->congested. Maybe this is a very highly utilized
- <!--$v=4507897-->Ethernet segment or a congested wide area link. Maybe some
- <!--$v=4511470-->form of queuing or discard mechanism for a wide area network circuit
- <!--$v=4515043-->would be appropriate. So I don't fill up my
- <!--$v=4517471-->output queues on my outbound interfaces and I can
- <!--$v=4520265-->flow my traffic, again through these
- <!--$v=4522647-->interfaces. This again, will be quite serious, if again this was a
- <!--$v=4526219-->routing protocol packet or high-priority packet for an application
- <!--$v=4529655-->that had to have service delivery.
- <!--$v=4532449-->There are various statistics that
- <!--$v=4535197-->can be looked at. If I do this show controller cbus command on
- <!--$v=4538633-->the CLI, I will now look at the size and number of
- <!--$v=4541885-->buffers I have in the packet buffers. But again remember,
- <!--$v=4544587-->these buffers are allocated when the CPU first
- <!--$v=4547794-->turns on the router, the router's first booted up, and it looks at the number of interfaces
- <!--$v=4551321-->of various types, and then allocates these buffers based on the
- <!--$v=4554893-->MTU size of those interfaces.
- <!--$v=4557458-->This can't be tuned. In fact, the only way you can really tune this is to
- <!--$v=4560298-->not have the same amount of interfaces in that
- <!--$v=4562863-->router. By changing the number of interfaces
- <!--$v=4565383-->I will re-allocate how many buffers available in various buffer
- <!--$v=4568360-->sizes. If I do show buffers
- <!--$v=4571933-->I now look at these system buffers, and these buffers are tunable.
- <!--$v=4574727-->But again, I would recommend that you either contact your local
- <!--$v=4577842-->SE or the Cisco tech before you start playing
- <!--$v=4581369-->and tuning with these buffers as they can have other serious effects
- <!--$v=4584804-->on network and router performance.
- <!--$v=4587278-->The interface statistics
- <!--$v=4589659-->command, with the show interface, whatever the
- <!--$v=4592682-->interface is - for example, show interface zero - shows me a lot of
- <!--$v=4596118-->information that can again help me to see how my buffers
- <!--$v=4598591-->are being used and how my queues are being used. We can see how
- <!--$v=4602027-->many output queue drops we have, how many -sorry -
- <!--$v=4604500-->how many input queue drops we have,
- <!--$v=4607203-->how many ignores, and how many times we just don't have any
- <!--$v=4609585-->buffers to place these packets into.
- <!--$v=4612379-->There's no real hard-and-fast numbers as to when one number means something more
- <!--$v=4615814-->than another number. The general rule of thumb
- <!--$v=4618196-->is, if I have anything up to about 5%
- <!--$v=4620578-->to 6% to 7% ignores compared to my total number
- <!--$v=4624151-->of packets, this is probably acceptable. Anything up to 8%
- <!--$v=4627678-->or 9% I would start at least thinking about what's
- <!--$v=4630746-->happening on my network. Anything above this, I would start
- <!--$v=4633632-->contacting either a network operation team
- <!--$v=4636014-->or the TAC or my local SE to come in and find out what's really going on in
- <!--$v=4639449-->my network and why I'm dropping or ignoring so many
- <!--$v=4641831-->packets. These aren't hard-and-fast numbers, they're just a rule of thumb
- <!--$v=4645267-->to give you some degree of piece of mind as to when to start worrying about
- <!--$v=4648702-->a problem. Another very useful
- <!--$v=4652275-->command is the show interface stat
- <!--$v=4654886-->command. This is a non-documented command
- <!--$v=4657726-->and you will not find it by using the help facilities within the
- <!--$v=4661115-->router CLI. But the show interface stat command
- <!--$v=4663680-->will tell you which interfaces are doing process
- <!--$v=4666749-->switching, route caching, which means
- <!--$v=4669314-->fast or optimum switching, or autonomous or silicon
- <!--$v=4672154-->switching. If I think that all my packets should be
- <!--$v=4675635-->fast switched but my performance is very poor,
- <!--$v=4678613-->by typing this command I will see whether for some reason
- <!--$v=4681361-->all my packets are being processed switched. For example, somebody's turned
- <!--$v=4684934-->DEBUG on and left DEBUG running on the router, again forcing
- <!--$v=4688369-->all those packets into the process switching path.
- <!--$v=4691942-->Another interesting command is the show
- <!--$v=4695377-->ip interface command. This will show me things like, "Do I have
- <!--$v=4698629-->access control lists setup on this particular protocol.
- <!--$v=4701836-->Am I using facilities such as autonomous
- <!--$v=4704263-->switching?" Remember, autonomous switching is always
- <!--$v=4707470-->available on a 7000, but by default,
- <!--$v=4710172-->fast switching is turned on for IP and IPX and so on.
- <!--$v=4713745-->Am I using accounting information?
- <!--$v=4716402-->And am I using compression on say, TCP
- <!--$v=4719287-->header information? So this command
- <!--$v=4722402-->is very, very useful so I can understand when I'm
- <!--$v=4724921-->doing features or turning on features that could affect performance
- <!--$v=4728265-->on my router.
- <!--$v=4730830-->So the things to look for if I'm finding network performance issues
- <!--$v=4733441-->are, percentage of drops and ignores and I gave you
- <!--$v=4736281-->some rules of thumb you can apply there -
- <!--$v=4738663-->things that hog the CPU like encryption and
- <!--$v=4741045-->compression, especially, for example, if my
- <!--$v=4743885-->compression is trying to compress data that can't be
- <!--$v=4746862-->compressed, like a bit image, or a GIF file, or a
- <!--$v=4750023-->JPEG image that really - or a file that's already
- <!--$v=4753458-->been compressed, that simply cannot be compressed anymore. The
- <!--$v=4756390-->CPU will still attempt to compress it but come up
- <!--$v=4759000-->with a very, very high CPU utilization with poor
- <!--$v=4762344-->results. Making sure my configuration
- <!--$v=4764955-->is correct so that if I can use autonomous switching I am -
- <!--$v=4768024-->if I need to use process switching, I have a
- <!--$v=4771368-->router platform that has the appropriate amount of processing
- <!--$v=4774299-->performance. Stability of my network is also very
- <!--$v=4777368-->important. Routing protocol updates need to be processed by the
- <!--$v=4780712-->CPU. In this case, if I have a lot of route instability,
- <!--$v=4784285-->or topology instability in my network, the
- <!--$v=4786941-->router itself's performance will suffer from this.
- <!--$v=4789461-->For example, because my cache isn't being validated very quickly and
- <!--$v=4792438-->I have to again, go through process switching, in the example of
- <!--$v=4795095-->optimum, NetFlow, and fast switching.
- <!--$v=4798347-->So from a summary
- <!--$v=4801187-->perspective, understand the performance requirements of your network, remembering
- <!--$v=4804668-->the intrinsic media restrictions you have.
- <!--$v=4807737-->Use a faster switching supported - the fastest supported
- <!--$v=4810256-->switching path, be it autonomous
- <!--$v=4812867-->switching or optimum switching, or silicon switching if you have the
- <!--$v=4816440-->silicon switch engine on the 7000. On the
- <!--$v=4819371-->7500, look for distributed switching functions like
- <!--$v=4822578-->distributed NetFlow and distributed optimum switching on the
- <!--$v=4825738-->VIP cards that are going to give you, again, a performance improvement.
- <!--$v=4828578-->Choose the appropriate router platform, and carefully
- <!--$v=4831693-->implement these features such as compression,
- <!--$v=4834121-->accounting, access control lists, that can really
- <!--$v=4836502-->affect the performance of your network equipment.
- <!--$v=4839068-->That's the conclusion of this presentation. I'll also
- <!--$v=4842549-->recommend there are various other presentations along this theme that could be very useful for an
- <!--$v=4846076-->overall network - enterprise network solution
- <!--$v=4848641-->perspective. The presentation by Marcus Phipps
- <!--$v=4851206-->on the performance and architecture of campus
- <!--$v=4853954-->LAN switches, again goes through the same basic steps of
- <!--$v=4857344-->understanding how the boxes work and how performance can be
- <!--$v=4859817-->affected by various characteristics. Thank you.
- </BODY>
- </HTML>
-
-
-